RANDBETWEEN、INDEX、VBA代碼實現隨機抽獎程序

2019-12-29   彩虹Excel

​爆竹聲中一歲除,春風送暖入屠蘇;千門萬戶曈曈日,總把新桃換舊符。

​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​--宋/王安石《元日》

年末馬上就要到了,一般這個時候,每家公司基本都開始準備年終聚餐以及年終總結了,當然必不可少的肯定是大家都想得到的抽獎環節了

比如特等獎:華為mate30

一等獎:電動自行車

。。。

幸運獎:50元現金

相信上面這些獎品,大家都想得到。公司抽獎有多種多樣,比如每人一個標籤紙,統一放到紙箱上抽獎,今天給大家分享個抽獎小工具,使用Excel來實現,不過這個需要用到VBA的一些知識,大家可以直接使用。

首先看下成品效果,操作步驟先點擊【立即抽獎】,當需要停止的時候,點擊【停止抽獎】,最後選中需顯示人員名稱單元格,再點保存即可。

下面就給大家講下,這是如何實現的。

操作步驟:

1、首先我們需要準備好人員清單,人員清單包含【工號】及【人員名單】信息,統一放置在[人員名單]工作表內,因工號是唯一的,這樣同時實現可避免抽獎出現相同名字的人員

2、製作抽獎介面樣板,首先我們先設置各獎項人員顯示位置,在B2:B8位置分別輸入各獎項的名稱,並添加相應的背景色等內容

再添加抽獎使用的背景樣式

3、我們在A1單元格輸入如下公式:

=RANDBETWEEN(2,COUNTA(人員名單!A:A))

RANDBETWEEN函數,隨機生成區間2~COUNTA(人員名單!A:A)之間的隨機數

因我們【人員名單】第一行是標題,故需要從2開始,返回的是隨機的行數

再在A2單元格輸入公式:

=INDEX(人員名單!A:B,抽獎系統!A1,1)&CHAR(10)&INDEX(人員名單!A:B,抽獎系統!A1,2

公式運行後及得到工號及人員名稱,Char(10)為換行符,起到自動換行作用

​4、製作抽獎顯示窗口,點擊插入【文本】-【橫向文本框】,輸入文字,設置字體顏色為紅色,字號選擇28,加粗,去除文本框的框線及背景色

再點擊顯示窗口,輸入公式:=A2

即把A2單元格的內容顯示到文本框中,這是只要我們按F9,可以看到姓名隨著變更了

5、插入抽獎及保存抽獎信息的窗口,點擊【插入】,選擇矩形,設置邊框為白色,無填充,輸入文字:開始抽獎,字號24,字體:華文彩雲

分別插入3個矩形,命名為:立即抽獎;停止抽獎;保存抽獎

6、編寫VBA代碼,右擊工作表名稱-【查看代碼】,輸入如下三段代碼

PrivateDeclarePtrSafe SubSleepLib"kernel32"(ByVal dwMillisecondsAsLong)'暫停 64位系統'PrivateDeclareSubSleepLib"kernel32"(ByVal dwMillisecondsAsLong)'暫停 32位系統DimmarkAsBooleanSub 立即開始()[A2]="=INDEX(人員名單!A:B,抽獎系統!A1,1)&CHAR(10)&INDEX(人員名單!A:B,抽獎系統!A1,2)" mark=True DoWhilemark   DoEvents   Sleep 50 ActiveSheet.CalculateLoopEndSub
Sub 停止抽獎()mark=FalseEndSub
Sub 保存抽獎()CH=[A1]ActiveCell = [A2]Sheets("人員名單").Cells(CH,1).EntireRow.DeleteApplication.EnableEvents = False [A2] = ""Application.EnableEvents=TrueEndSub

7、再分別右擊插入的矩形框,點擊【指定宏】,分別指定以上設置的宏命令

這樣一個抽獎小程序就做好,我們只要點擊【立即抽獎】,再點擊【停止抽獎】按鈕,最終保存抽獎人名,即可。

此方法主要是應用了INDEX及RANDBETWEEN函數,再結合VBA程序製作而成。

數據原始檔案,可從以下網盤下載:

連結: https://pan.baidu.com/s/19BsAE8M1IRk9MOxUG78FHQ

提取碼: hq3q

如果覺得文章對你有幫助的話,希望大家幫忙點贊加分享哦~,謝謝

本文由彩虹Excel原創,歡迎關注,帶你一起長知識!