How to make lucky draw names in Excel?
In your daily work, sometimes, you need to select some employees randomly from a long list names as the lucky names. In Excel, how could you randomly select some names for making lucky draw? This article, I will talk about some useful methods to deal with this job in Excel.
For example, I want to extract any 3 names from the name list, the following long formula can help you, please do as this:
Enter this formula into a blank cell where you want to put the result: =IF(ROWS(C$2:C2)>B$2,"",INDEX(A$2:A$16,AGGREGATE(15,6,((ROW(A$2:A$16)-ROW(A$2)+1)/ISNA(MATCH(A$2:A$16,C$1:C1,0))),RANDBETWEEN(1,ROWS(A$2:A$16)-COUNTA(C$1:C1)+1)))) , and then drag the fill handle down to cells as you need, see screenshot:
1. In the above formula: A2:A16 is the name list that you want to extract from randomly, B2 is the required number you want to extract names, C2 is the cell where to enter the formula, and C1 is the cell above the formula cell.
2. You can press F9 key to get another group of new names randomly.
Here, a VBA code also can help you to finish this task, please do as this:
1. Hold down the Alt + F11 keys to open the Microsoft Visual Basic for Applications window.
2. Click Insert > Module, and paste the following code in the Module Window.
VBA code: Extract random names from a list:
Public Sub LuckyDraw() Dim I, J, xRnd As Long Dim xSRg, xDRg As Range Dim xDic As New Dictionary Dim xnum, xLastRow As Long On Error Resume Next Set xSRg = Application.InputBox("Please select the data list:", "KuTools for Excel", Selection.Address, , , , , 8) If xSRg Is Nothing Then Exit Sub Set xDRg = Application.InputBox("Please selecta cell to put the result:", "KuTools for Excel", , , , , , 8) If xDRg Is Nothing Then Exit Sub xLastRow = xSRg.Rows.Count Set xSRg = xSRg(1) Set xDRg = xDRg(1) xnum = Range("B2") If xnum < 1 Then Exit Sub J = 0 For I = 1 To xnum LabExit: xRnd = Int(Rnd() * xLastRow) If xDic.Exists(xRnd) Then GoTo LabExit xDic.Add xRnd, "" xDRg.Offset(J, 0).Value = xSRg.Offset(xRnd, 0).Value J = J + 1 Next End Sub
Note: In the above code, B2 is the cell contains the number of names you want to extract.
3. After inserting the code, then click Tools > References in the opened Microsoft Visual Basic for Applications window, and then, in the popped out References – VBAProject dialog box, check Microsoft Scripting Runtime option in the Available References list box, see screenshot:
4. And then click OK button to exit the dialog box, then press F5 key to run this code, and a prompt box is popped out to remind you selecting the data list you want to extract names from, see screenshot:
5. Click OK button, and another prompt box is popped out, please select a cell where you want to put the result, see screenshot:
6. Then click OK, and the desired number of names have been created randomly at once, see screenshot:
May be above two methods are difficult for most of us, here, if you have Kutools for Excel, with its Sort Range Randomly feature, you can quickly select names randomly.
|Kutools for Excel : with more than 300 handy Excel add-ins, free to try with no limitation in 30 days.|
After installing Kutools for Excel, please do as this:
1. Select the name list that you want to select randomly. Then click Kutools > Range > Sort / Select Range Randomly, see screenshot:
2. In the Sort/Select Range Randomly dialog box, under the Select tab, enter the number that you want to select names into the No. of cells to select text box, and then choose Select random cells in the Select Type section, see screenshot:
3. Then click Ok button, and your specific number of names have been selected as you need, see screenshot: