高逼格|Excel抽獎小工具,可直接套用(用Excel制作公司年會的抽獎系統)


`

 

 

 

已踏入工作的小伙伴最期待的當然是公司年會抽獎環節,吃不吃飯都無所謂的,如果能抽到個大獎,必然是一件很開心的事情~

現在大部門公司抽獎都是用編程技術制作個小程序,今天我們就說說如何利用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即可滾動照片。

 完成。

 

 

 

````

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM