|Here's one possible method....|
First, I'm going to assume that you have your values in Sheet3!A1:A1000. That just happens to be how I set my workbook up, the code can easily be changed to use a different sheet.
First we need to create a list of numbers from 1 to 1000 in random order.
I did this as follows:
1 - Fill Sheet1!A1:A1000 with 1-1000.
2 - Fill B1:B1000 with =RAND().
3 - Sort Columns A&B by Column B to randomize your 1-1000 numbers.
4 - Delete Column B.
Next, the titles for my 5 groups were placed in E1:I1 of the same sheet as the randomized list of 1-1000.
I then ran the following code, which will use the numbers in Column A of Sheet1 as Row numbers to pull values from Sheet3 into the table in E:J, in groups of 200. Since the Rows number are non-repeating and in random order, your values from Sheet3 will be grouped "randomly" into the 5 groups.
'Initialize variable for Start Row and Destination Row
stRw = 1
dstRw = 1
'Loop through 5 Groups (Columns E:I)
For col = 5 To 9
'Loop through Column A in Groups of 200
For srcRw = stRw To stRw + 199
'Increment Destination Row
dstRw = dstRw + 1
'Place value from Sheet 3 Column A in Column E:I based
'on Row Number from Sheet1 Column A
Cells(dstRw, col) = Sheets(3).Range("A" & Cells(srcRw, 1))
'Reset Destination Row
dstRw = 1
'Set Start Row for next group of 200
stRw = stRw + 200
Click Here Before Posting Data or VBA Code ---> How To Post Data or Code.