Board logo

標題: excel是否可以有隨機抽獎的功能 [打印本頁]

作者: emma    時間: 2010-8-2 19:28     標題: excel是否可以有隨機抽獎的功能

如果有份名單清冊(例100名),可否從隨機產生

頭獎1名
貳獎2名
參獎3名
普獎10名
↑(可再調整獎項與名額)

作者: ivanyung    時間: 2010-8-2 21:54

用 rand() 公式, 用 column B 做 sorting
假設如下:
A              B
Name       =Rand()
作者: emma    時間: 2010-8-3 13:32

[attach]2165[/attach]
不好意思,我不知道要怎麼上傳EXCEL檔,所以只好先貼圖上來,希望可以再補充我文字說明不足的地方,
樓上的大大您好,我還是不太清楚您所描述的方式要如何應用,所以可以再麻煩您再多解釋一點嗎?
作者: ivanyung    時間: 2010-8-3 13:40

[attach]2167[/attach]
按 "F9" 會自動更新
作者: emma    時間: 2010-8-3 13:53

嗚嗚,ivanyung 大大,我目前還沒有下載的權限耶,
請問我能私下給您我的mail,再麻煩您寄給我嗎@"@?
作者: ivanyung    時間: 2010-8-3 14:07

嗚嗚,ivanyung 大大,我目前還沒有下載的權限耶,
請問我能私下給您我的mail,再麻煩您寄給我嗎@"@?
emma 發表於 2010-8-3 13:53



    這裡限制真大.... 我目前沒有權限發短消息 ...
作者: emma    時間: 2010-8-3 16:20

本帖最後由 emma 於 2010-8-3 17:13 編輯

[attach]2174[/attach]

ivanyung大大謝謝您,但可否再請教一下,如果再複雜點,

例如同一位被抽獎人如果擁有多次被抽獎的機會,

有沒有像新附上的圖檔這種方式被抽獎呢?

以舉例方式說明的話,就是如有a、b、c三人參與抽獎

a有5次中獎機會

b有10次中獎機會

c有1次中獎機會

一樣隨機抽出三個獎項,可以依a、b、c所設定的中獎機會
欄位下去產生亂數抽獎嗎?

作者: ivanyung    時間: 2010-8-3 22:24

用最簡單的方法
如果:
a有5次中獎機會
b有10次中獎機會
c有1次中獎機會

ID 姓名
1 a
1 a
1 a
1 a
1 a
2 b
2 b
2 b
2 b
2 b
2 b
2 b
2 b
2 b
2 b
2 b
3 c


作者: gong    時間: 2010-8-3 22:53

a欄姓名a001-a100
b1=rand()下拉至b100
c1=rank(b1,b1:b100)
頭獎1名=index(a1:a100,match(1,c1:c100,0))
貳獎2名=index(a1:a100,match(2,c1:c100,0)),index(a1:a100,match(3,c1:c100,0))
參獎3名
普獎10名
參獎以下類推
作者: gong    時間: 2010-8-3 23:03

如果要不同人有不同抽獎機會,如年資每滿一年增加一次抽獎機會
我支持8樓ivanyung
的做法

到底是手工做還是函數作那要看你的需求
用函數還頗有挑戰性的
我不知是否會做,要想想看,先這樣有需求再說
作者: emma    時間: 2010-8-4 15:17

回復 9# gong


    [attach]2187[/attach]
您好,照本宣科的結果發現,會有「#N/A」值的產生,
請問會產生這個問題是我沒有使用好,還是是要再排除的問題呢?

作者: emma    時間: 2010-8-4 15:29

本帖最後由 emma 於 2010-8-4 15:34 編輯
如果要不同人有不同抽獎機會,如年資每滿一年增加一次抽獎機會
我支持8樓ivanyung
的做法

到底是手工做 ...
gong 發表於 2010-8-3 23:03



其實我也有想過要手工做,但如果可以用函數代出的話,
當然更佳,只不過我也不知道有沒有可行的辦法,
所以才想請教各位先進們,
因為我需要應用的地方比較複雜,
如果用手工的話可能比較容易出錯,
所以如果有函數或公式可套出的話,是再好不過了,
之所以設不同的中獎機會的想法是,
例如消費金額滿500元就可得一張摸彩券,
a如果購買金額為10000,那就有200張摸彩券,
如果依8樓ivanyung 大大的做法,
那麼我就得複製a的資料200筆,以此類推,
我想,如果有其他方式可以使用就再好不過了,
QQ

作者: gong    時間: 2010-8-4 15:35

我說的只是示例,與你的檔案位置不符

要相同位置,上傳檔案吧,無法幫你建資料
作者: emma    時間: 2010-8-4 15:40

回復 13# gong


    您好,已附上附件,謝謝您~~
作者: GBKEE    時間: 2010-8-4 16:13

回復 14# emma
D欄公式 要加上絕對位置下拉  =RANK(A2,A$2:A$56)
否則  拉到D56時 公式變成    =RANK(A56,A56:A110)
範圍不一樣 才會產生 #N/A
作者: PD961A    時間: 2010-8-4 16:39

本帖最後由 PD961A 於 2010-8-4 16:46 編輯

回復 14# emma


    [attach]2189[/attach]



    [attach]2190[/attach]
作者: gong    時間: 2010-8-4 17:48

公式2!
E2=IF(RANK($A2,$A$2:$A$56)=1,"頭獎",IF(RANK($A2,$A$2:$A$56)<=3,"貳獎",IF(RANK($A2,$A$2:$A$56)<=6,"參獎",IF(RANK($A2,$A$2:$A$56)<=16,"普獎",""))))
下拉
作者: gong    時間: 2010-8-4 17:50

本帖最後由 gong 於 2010-8-4 17:52 編輯

另解
公式2!
H2=INDEX($B$2:$C$56,MATCH($F2,$D$2:$D$56,0),1)
I2=INDEX($B$2:$C$56,MATCH($F2,$D$2:$D$56,0),2)
作者: gong    時間: 2010-8-4 18:13

展開式
公式1!
F2
{=IF((ROW()-1)<=SUM($D$2:$D$24),INDEX($C$2:$C$24,MATCH(1,--(COUNTIF(F$1:F1,$C$2:$C$24)<$D$2:$D$24),0)),"")}

G2=IF(F2="","",RAND())

H2=IF(F2="","",IF(RANK($G2,$G$2:$G$56)=1,"頭獎",IF(RANK($G2,$G$2:$G$56)<=3,"貳獎",IF(RANK($G2,$G$2:$G$56)<=6,"參獎",IF(RANK($G2,$G$2:$G$56)<=16,"普獎","")))))
作者: asimov    時間: 2010-8-4 23:57

本帖最後由 asimov 於 2010-8-6 02:14 編輯

回復 14# emma


提供另一種方式
每次只抽出一個中獎人 (I5欄位)
將中獎人依序填入F17,F16,F15
填入F17按enter後在產生下一個中獎人
亂數產生的ID不會重覆
當然必須借助輔助欄
[attach]2242[/attach]

[attach]2241[/attach]
已更正亂數公式
作者: PD961A    時間: 2010-8-5 13:25

本帖最後由 PD961A 於 2010-8-7 13:55 編輯

回復 14# emma


傳回您指定的數字之間的任意一個亂數。在每次計算工作表時,都會傳回一個新的亂數。
如果無法使用此函數,且傳回 #NAME? 錯誤,請執行程式以安裝「分析工具箱」。
作者: emma    時間: 2010-8-5 13:37

本帖最後由 emma 於 2010-8-5 16:04 編輯

[attach]2220[/attach]回復 20# asimov


asimov 大大,您好~~
關於您所提供的方式,一次只抽出一位得獎人的效果還滿吸引我的,
但不知為何,我所測試出來的結果是,不容易產生重複的ID,
但還是會有產生重複ID的情況發生,
另外,我的ID目前是假設性的以1、2、3...這種類似序號的編排方式
但實際應用的話,應該是會像身份證號這類有英文字開頭的ID來套用,
那麼=INT(RAND()*(COUNTA($B$2B$56)-COUNTA($F$2F$17)))+1
要如何修正才可以達到直接帶出得獎人是誰(身份證號姓名)的效果?
[attach]2215[/attach]

PS.您好,再附上較新的附件,謝謝!!
作者: PD961A    時間: 2010-8-5 15:16

回復 22# emma


    [attach]2216[/attach]
作者: asimov    時間: 2010-8-6 01:59

回復 22# emma


原20樓回覆 I5 之中獎人ID公式少一個動作
正確為=VLOOKUP(INT(RAND()*(COUNTA($B$2:$B$56)-COUNTA($F$2:$F$17)))+1,$A$2:$B$56,2,0)

依您修改後的檔案 F22 公式為
=VLOOKUP(INT(RAND()*(COUNTA($B$2:$B$56)-COUNTA($I$2:$I$17)))+1,$A$2:$B$56,2,0)

實際應用,建議刪除 B欄"序號"
改以"ID","會員編號"或"彩券號碼"取代
但須注意以上三項都不可重複
如一人可有多次抽獎機會
則以"彩券號碼"為宜
[attach]2237[/attach]

[attach]2238[/attach]
作者: ivanyung    時間: 2010-8-6 13:24

要設定多於一個機會, 用巨集比較容易處理

[attach]2258[/attach]
  1. Sub jjj()
  2.    
  3.     Range("f1..h1000").Clear
  4.     Range("f1").Value = "id"
  5.     Range("g1").Value = "name"
  6.    
  7.    
  8.     k = 2   'first row to fill in value is 2.
  9.     For Each i In Range("c2:c1000")
  10.         For j = 1 To i.Value
  11.             Cells(k, 6).Value = i.Offset(, -2).Value
  12.             Cells(k, 7).Value = i.Offset(, -1).Value
  13.             Cells(k, 8).Value = Rnd()
  14.             k = k + 1
  15.         Next
  16.     Next
  17.    
  18.     Range("f1:h1000").Select
  19.     Selection.Sort Key1:=Range("h2"), Order1:=xlAscending, Header:=xlGuess, _
  20.         OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
  21.    
  22.     Range("h:h").Clear
  23. End Sub
複製代碼

作者: emma    時間: 2010-8-10 18:32

非常謝謝PD961A、asimov、ivanyung、PD961A、gong及GBKEE 各位先進們的協助,
目前關於此問題,由各位先進協助幫忙下,已綜合取得較佳的使用方式,謝謝大家!!

作者: Luc    時間: 2010-8-13 20:00

以固定次數來說,8樓的做法是最好的,
多放幾支籤,亂數排序後挑出前面的項目。這樣就可以收工了。
另一種方式是設定每種獎項的機率及每個人的亂數權重,由超過門檻值的人組成候選名單。
有的長官不需要那麼自動化,會想從名單挑... 抽獎也是很敏感的任務呢。
作者: kelsie    時間: 2010-9-9 14:47

以上受用很多~~

我想請問~如果我想用個commend鈕來等於F9的更新
該如何設定?

若在同一個工作表中~有4大項進行抽獎~
第一項已抽獎,若在進行第二項抽獎時~
用F9更新會同步將第一項的獎項名單又洗掉了..
該如何進行設定呢??

作者: Luc    時間: 2010-9-13 22:57

複製/貼上值
保留結果
作者: sushiso    時間: 2010-9-15 23:52

thx a lot!  let me try it
作者: kelsie    時間: 2010-9-16 14:34

複製/貼上值
保留結果
Luc 發表於 2010-9-13 22:57



    這個我了解∼還是感謝你的回答!

如何使用command鈕來進行執行的部份呢?
如果不想按f9的話?
作者: Hsieh    時間: 2010-9-16 21:30

回復 31# kelsie

錄製巨集
作者: 米糕    時間: 2010-10-29 16:33

以固定次數來說,8樓的做法是最好的,
多放幾支籤,亂數排序後挑出前面的項目。這樣就可以收工了。
另一種方式是設定每種獎項的機率及每個人的亂數權重,由超過門檻值的人組成候選名單。
Luc 發表於 2010-8-13 20:00


請問亂數權重要如何應用?
因為目前手上抽獎名單,
有每個人可以多個抽獎機會(300~1),
如果要複製300次似乎不是簡單的方法

作者: kittylin123    時間: 2010-12-9 12:40

請問一下哦,我之前也是用亂數的方式決定中獎名單,
結果發現亂數函數作出的結果會重複耶,
剛才試也會這樣,有沒有其他方式可以解決這個問題呢?
謝謝各位大大回覆哦
作者: gong    時間: 2011-2-2 20:26

請問一下哦,我之前也是用亂數的方式決定中獎名單,
結果發現亂數函數作出的結果會重複耶,
剛才試也會這 ...
kittylin123 發表於 2010-12-9 12:40


a1:a100=rand()
b1:b100=rank(a1,$a$1:$a$100)
b欄即為1:100不重覆的亂數
作者: handmuch    時間: 2011-2-5 11:31

回復 8# ivanyung


    [attach]4638[/attach]
作者: GOODHI    時間: 2011-2-8 13:11

這篇很實用~感謝~
一串看下來,收穫很多~
作者: jimmy1117    時間: 2011-9-29 10:44

very nice program~ thanks
作者: jimmy1117    時間: 2011-12-20 02:01

暈倒~~~~ 沒法下載檔案。怎麼這麼嚴格啊!!!
作者: bearteam37    時間: 2012-10-14 02:15

感謝大大分享
作者: marcohk168    時間: 2012-12-27 11:56

thx a lot!  let me try it=]




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)