`
已踏入工作的小伙伴最期待的當然是公司年會抽獎環節,吃不吃飯都無所謂的,如果能抽到個大獎,必然是一件很開心的事情~
現在大部門公司抽獎都是用編程技術制作個小程序,今天我們就說說如何利用Excel去制作一個抽獎小系統。
下面中點擊【開始】按鈕,屏幕上開始滾動員工姓名,點擊【停止】按鈕,抽出中獎人,並將中獎人名單添加到表格中去,方便領獎,同時已中獎者將不會參與后面的抽獎環節。

是不是很有意思呢?下面詳細說說這個小系統的制作方法~
思路
一共制作三個小控件,【開始】按鈕控制程序運行,【停止】按鈕控制程序暫停,【清除】按鈕清除已中獎者名單;
在用一個單元格展示人員名單滾動效果;
最后選定一塊區域用於存放中獎者名單。
基本布局
選中Excel中一塊區域,第一第二行合並單元格展示名稱,B4單元格字體調大用於員工姓名滾動,D4:H12區域用於存放中獎者名單,格式調整比較簡單,這里不再贅述。

添加控件
點擊【開發工具】—【插入】,選擇第一個【按鈕】控件,插入,暫時先不指定宏,點擊【取消】,將控件名字修改為【開始】,同理插入【停止】、【清除】控件,如下圖所示:


人員名單准備
插頁1【Sheet1】為抽獎系統界面,插頁2【人員名單列表】為員工名單存放列;

輸入代碼
一共輸入三段代碼:
第一段:

第二段&第三段:

指定控件
回到插頁系統界面,依次選中控件,右鍵選擇【指定宏】,依次選擇對應的宏,自此,程序完成。

程序運行
點擊【開始】按鈕,即可進行抽獎。
完整代碼
Dim flag Sub 開始() c = Rnd Dim rng As Range Set dic = CreateObject("scripting.dictionary") n = 0 For i = 2 To 201 If Application.WorksheetFunction.CountIf(Range("d4:h12"), _ Worksheets("人員名單列表").Cells(i, 1)) = 0 Then n = n + 1 dic(n) = Worksheets("人員名單列表").Cells(i, 1) End If Next flag = True Do DoEvents If flag Then Cells(4, 2) = dic(Int(Rnd * dic.Count + 1)) End If Loop While flag End Sub Sub 停止() flag = False For i = 4 To 12 For j = 4 To 8 If Cells(i, j) = "" Then Cells(i, j) = Cells(4, 2): GoTo 100 End If Next Next 100: End Sub Sub 清除() For i = 2 To 100 c = Rnd Next Range("d4:h12").ClearContents End Sub
代碼說明
代碼語法比較基礎,這里重點說下比較重要的地方:
1、抽獎重要的一點是已抽到的員工不在參與后續環節的抽獎,所以在進行后續抽獎的時候需要剔除前面已中獎者的名單,這里利用字典dictionary不重復性進行解決;
2、開始代碼for循環是從2到201,是因為插頁【人員名單列表】中,員工姓名分布在A列2至201行,如果有更多或者更少的員工,數字做相應更改即可;
3、Rnd函數是一個隨機函數,隨機返回(0,1)之間的小數;
4、停止代碼中,再將中獎名單賦值到表格中之后,利用GoTo 100,跳出兩個循環,截圖這段代碼,不用exit for 是因為 exit for 只會跳出第一個for 循環,不會跳出第二個for循環;
5、代碼開始的語句“Dim flag”是非常有必要的,不然姓名滾動單元格會一直滾動;
6、代碼中的很多數字是根據抽獎頁面布局來確定的, 所以先布局好頁面,在進行代碼的書寫,頁面布局可靈活改變,代碼數字做相應變動即可。
用Excel制作公司年會的抽獎系統(帶頭像)
在年會中,抽獎環節是重頭戲,那你知道如何用Excel制作帶有照片的抽獎系統嗎?本期技巧妹與大家分享一下有關制作技巧。
抽獎效果:
實現以上的效果,需要准備好數據,將相應的名字和照片錄入到Excel中,如下圖所示:
注意:要將圖片的屬性設置成“隨單元格改變位置和大小”。
操作步驟
第一步:設置隨機數值
在空單元格中,這里是在F1單元格中輸入公式
=INDEX($A$1:$A$8,RANDBETWEEN(1,COUNTA($A$1:$A$8)))
公式說明:
INDEX函數用法:= INDEX(單元格區域,指定的行數,指定的列數)
RANDBETWEEN函數:表示隨機生成整數,語法:=RANDBETWEEN(起始值,結束值)
COUNTA函數:計算非空單元格
第二步:建立名稱
點擊公式——定義的名稱——名稱管理器——新建,然后重命名,這里命名為“抽獎”,在引用中輸入公式
=INDIRECT("B"&MATCH(抽獎!$F$1,抽獎!$A$1:$A$8,0))
公式說明:
MATCH函數用法:= MATCH(查找值,查找區域,查找方式)
第三步:插入圖片
在表格中插入圖片,之后在圖片上插入文本框和任意一張圖片,根據自己需要排版好,然后選中文本框,輸入=F1單元格,選中圖片,在編輯框中輸入=抽獎,最后按F9即可滾動照片。
````