This assumes you have NAME, item1, item2, ...
Alter as you wish.
Sub RandomList()
Dim vName
Dim r As Integer, c As Integer, j As Integer
Dim col As Collection
Dim shtApp As Worksheet, shtOut As Worksheet
Const kKEEP = 2
Set shtApp = ActiveSheet
Worksheets.Add
Set shtOut = ActiveSheet
shtApp.Activate
Range("A2").Select
While ActiveCell.Value <> ""
vName = ActiveCell.Value
shtOut.Activate
ActiveCell.Value = vName
shtApp.Activate
c = 1
Set col = New Collection
'get all values into collection
While ActiveCell.Offset(0, c).Value <> ""
col.Add ActiveCell.Offset(0, c).Value
c = c + 1
Wend
'sift thru collection for randoms
shtOut.Activate
j = 1
If col.Count > kKEEP Then
c = col.Count
For i = 1 To kKEEP
r = Int((c - 2 + 1) * Rnd() + 2) 'start at 2nd item,1st is name
'put 1 item random
ActiveCell.Offset(0, j).Value = col(c)
j = j + 1
'remove item
col.Remove r
c = c - 1
Next
Else
For c = 1 To col.Count 'put all the items
ActiveCell.Offset(0, c).Value = col(c)
Next
End If
ActiveCell.Offset(1, 0).Select 'next row
shtApp.Activate
ActiveCell.Offset(1, 0).Select 'next row
Wend
Set col = Nothing
Set shtApp = Nothing
Set shtOut = Nothing
End Sub
Bookmarks