最近有粉絲在後台向我提了一個工作中的小需求,具體如下:
■ 因為公司要組織一個知識競賽,其中有一個遊戲環節,需要從一組名單中随機選出指定數量的人員參加遊戲,并且需要在大屏中滾動名單以增強遊戲緊張感。當然最重要的是最終被選中的名單中不能有重複名單出現。她希望能通過Excel來實現這個需求。
需求分析:其實這個需求與抽獎非常類似,我們可以通過Excel的VBA宏功能來編寫一個小工具來實現這個需求,說幹就幹,以下就是最終實現的成品效果:
抽獎小工具演示
功能說明:
第1步、名單在sheet2《名單維護》工作表的A列中輸入
第2步、設置抽獎人數
第3步、點擊開始按鈕,名單開始滾動
第4步、點擊停止按鈕,出現獲獎人員名單
制作步驟如下:
第一步:制作表格
第二步:編寫代碼
#If VBA7 Then
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr)
#Else
Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)
#End If
Dim mark As Boolean
Sub 立即開始()
mark = True
Do While mark
DoEvents
Sleep 100
抽獎
Loop
End Sub
Sub 停止抽獎()
mark = False
End Sub
Sub 抽獎()
Dim M&, N&, i&, j&, arr
Dim d As Object
Set d = CreateObject("scripting.dictionary")
arr = Sheet2.Range("A2:A" & Sheet2.Range("A65536").End(xlUp).Row)
Range("B4:B65536").ClearContents
M = Range("D4")
N = UBound(arr)
If N < M Then MsgBox "人數超出" & N: Exit Sub
Do While i < M
j = Int(Rnd() * N 1)
If Not d.exists(j) Then
i = i 1
d(j) = arr(j, 1)
End If
Loop
Range("B4").Resize(d.Count, 1) = Application.Transpose(d.items)
End Sub
寫入代碼
第三步:插入命令按鈕
插入命令按鈕
第四步:名單演示美化
設置格式
總結:
這個小工具的核心是:利用了字典 數組實現了名單的随機不重複抽取。
如果你也有類似的需求,可以關注本頭條号:千萬别學Excel,并私信回複:小工具 即可獲取本教程所用課件。
圖文教程創作不易,請點贊、關注并轉發給更多有需求的小夥伴們吧!
送人玫瑰,手有餘香!
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!