• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 99
  • Last Modified:

Random classification of records

Hello, I would like to randomly classify each of the attached 201 data records into one of 5 groups. Four of the groups will contain 40 records, and a fifth group will contain 41 records.

The group number (1-5) should be contained in column C.

Does anyone have a suggestion on how to randomly generate these five groups?

Many thanks in advance.
RandomClasses.xlsx
0
dougf1r
Asked:
dougf1r
  • 5
  • 3
1 Solution
 
COACHMAN99Commented:
if you place the formula in a spare column and recalc the sheet, you should be close.
RANDBETWEEN( 1, 5 ),
you should then sum each assignment (1-5) to ensure you have a balanced distribution.
0
 
dougf1rAuthor Commented:
How can this be modified such that I have 4 equal-sized groups (n=40) and one group with n=41?
0
 
COACHMAN99Commented:
Without running a small macro, populating each cell, and keeping a running total, I don't know. The above will be close.
Do you have to repeat this, or is it a once-off?
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
dougf1rAuthor Commented:
I will need to repeat this.

A small macro does seem that it would be most helpful. I am unsure of the proper code to carry this out.

Might someone be comfortable putting this code together?
0
 
COACHMAN99Commented:
try this (you will need to add the vba-addin
In Excel, install the Analysis toolpack -VBA from Tools Addins.
Then in VBA, click Tools - References and put a checkmark on atpvbaen.xls
The problem with this is if you share your book, the other person must also have the analysis toolpack-vba addin installed.

Sub PopVals()
Dim vval As Long
Dim counts(5) As Long
x = 1
While x <= 201
  vval = WorksheetFunction.RandBetween(1, 5)
  Worksheets("Sheet2").Cells(x, 3) = vval
  vval = vval - 1
  If counts(vval) < 51 And vval < 5 Then
    counts(vval) = counts(vval + 1)
    x = x + 1
  End If
  If counts(vval) < 52 And vval = 5 Then
    counts(vval) = counts(vval + 1)
    x = x + 1
  End If
Wend

End Sub
0
 
COACHMAN99Commented:
The above isn't correct - please wait for a better response - I have to go.
0
 
COACHMAN99Commented:
Here you go:
Sub PopVals()
Dim vval As Long
Dim counts(5) As Long
x = 1
Range("C1:C201") = ""
While x <= 201
  vval = WorksheetFunction.RandBetween(1, 5)
  Worksheets("Sheet2").Cells(x, 3) = vval
  vval = vval - 1
  If counts(vval) < 40 And vval < 4 Then
    counts(vval) = counts(vval) + 1
    x = x + 1
  End If
  If counts(vval) < 41 And vval = 4 Then
    counts(vval) = counts(vval) + 1
    x = x + 1
  End If
Wend

End Sub
0
 
dougf1rAuthor Commented:
Works perfectly. Many thanks!
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 5
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now