Is it sometimes pulling the same number more than once (I ran a few tests, and did not see that happening)?
To do multiple rounds, I would change the procedure to one that has parameters that you feed into it, like this:
VBA Code:
Sub Select_Any_NumberOf_Names(first_data_row As Long, xNumber As Long, rowNum As Long, colNum As Long)
'Variables
' - first_data_row: first row that the data we are looking in starts on
' - xNumber: the number of random entries to pull
' - rowNum: the row number to return the first random entry to
' - colNum: the column in which to return the random entries to
Dim xNames As Long
Dim xRandom As Integer
Dim Array_for_Names() As String
Dim j As Byte
Dim Ar_I As Byte
Application.ScreenUpdating = False
ReDim Array_for_Names(1 To xNumber)
xNames = Application.CountA(Range("A:A")) - (first_data_row - 1)
j = 1
Do While j <= xNumber
RandomNo:
xRandom = Application.RandBetween(first_data_row, xNames + 1)
For Ar_I = LBound(Array_for_Names) To UBound(Array_for_Names)
If Array_for_Names(Ar_I) = Cells(xRandom, 1).Value Then
GoTo RandomNo
End If
Next Ar_I
Array_for_Names(j) = Cells(xRandom, 1).Value
j = j + 1
Loop
For Ar_I = LBound(Array_for_Names) To UBound(Array_for_Names)
Cells(rowNum, colNum) = Array_for_Names(Ar_I)
rowNum = rowNum + 1
Next Ar_I
Application.ScreenUpdating = True
End Sub
Then, you could call it multiple times, with different values, like this:
VBA Code:
Sub RunAll()
' Call first round of random entries, and paste starting in cell I3
Call Select_Any_NumberOf_Names(2, 15, 3, 9)
' Call second round of random entries, and paste starting in cell I18
Call Select_Any_NumberOf_Names(2, 15, 18, 9)
End Sub
So you only run this second macro (note that the only thing I changed was the starting row number to paste the first random result to, from row 3 to row 18).