[有很多種解決問題的方法,這邊只是提供一個我知道的,並不代表是最佳的]

[使用函數]

A.RANDBETWEEN(XXX,XXX)= RANDBETWEEN=(最小值,最大值)

函數說明:在最小值與最大值間隨機號碼產生一個號碼

B.COUNTIF(XXX,XXX)= COUNTIF(範圍,目標)

函數說明:計算在一個範圍內,目標值得個數

 

[範例說明]

1.在活頁簿內製作如下的格式

2. A2F2的儲存格公式全部均下

=RANDBETWEEN(1,48) 148號隨機產生一個數字。

 3.A3F3的儲存格公式,分別如下所示

A3儲存格 =COUNTIF($A$2:$F$2,A2) 計算從範圍 A2F2 中,與A2儲存格相同的號碼有幾個。

B3儲存格 =COUNTIF($A$2:$F$2,B2) 計算從範圍 A2F2 中,與B2儲存格相同的號碼有幾個。

C3儲存格 =COUNTIF($A$2:$F$2,C2) 計算從範圍 A2F2 中,與C2儲存格相同的號碼有幾個。

D3儲存格 =COUNTIF($A$2:$F$2,D2) 計算從範圍 A2F2 中,與D2儲存格相同的號碼有幾個。

E3儲存格 =COUNTIF($A$2:$F$2,E2) 計算從範圍 A2F2 中,與E2儲存格相同的號碼有幾個。

F3儲存格 =COUNTIF($A$2:$F$2,F2) 計算從範圍 A2F2 中,與F2儲存格相同的號碼有幾個。

 

4.VBAProject內插入一個模組

5.模組內的程式碼如下

=========================================================

Sub 抽獎() 

Calculate ‘執行計算

For I = 6 To 37 ‘I要設定為637,因為A3~F3是計算A2~F2的數字是否有重複出現,若沒有重複的數字A3~F3的加總一定等於6,當然如果A2~F2出現的數字都一樣,最大也是6*6=36,所以要設定37,因為如果你設定36,如果剛好是出現加總36,迴圈就不會執行,所以要設定比36大的數字,讓他如果發生重覆是不會執行停止的,因為I永遠不會到37只會到36,除非你指定他到37。

I = Application.WorksheetFunction.Sum(Range("A3:F3")) ‘I=A3F3的加總

If I > 7 Then 因為我們是取六個數字,如果大於七就表示有一個重覆

Calculate ‘因為I大於七所以我們要重新在執行一次計算

Else ‘如果沒有大於七就表示是I等於六

I = 37 此時強制讓I=37 跳出迴圈

End If

Next I 

End Sub

=========================================================

6.於工作頁上隨意新增一個圖形,並將其指定剛剛設定新增好的模組巨集 [抽獎]

      ​​圖形內可以任意取名,在此處就取名為 [抽獎]

 

7.按下抽獎鈕就會自動產生出六個不同號碼了

[進階運用]

如果我今天想要1~42572,每次都要去重下A2~F2的公式很麻煩,請問要如何自由設定號碼的區間,而不用改公式呢?

1.在C8D9這個範圍加入如下紅框的資料。

2.修改A2F2的公式均修改為,=RANDBETWEEN($C$9,$D$9) 最小值參照C9欄位,最大值參照D9欄位,隨機出現一個數字

3.修改巨集內的程式碼

新增四行指令如下紅字所示(黑字的部份沒有進行修改所以請參閱之前的說明),主要是要防止如果有人將最小值輸入1最大值輸入5,因為我們是取六個隨機數字,所以這樣絕對會有重覆的數字出現,故必須將防呆寫入巨集,當有人輸入最小值與最大值相減小於5時,巨集不會啟動,這樣就可以避免巨集陷入無限迴圈,導致Excel停止回應的情形。

 

=========================================================

Sub 抽獎()

If Range("D9") - Range("C9") < 5 Then 如果最大值-最小值小於5就出現對資訊視窗

MsgBox ("您輸入的區間範圍,最大值-最小值必須大於或等於五,才可進行抽獎") 跳出資訊視窗,提醒使用者相關訊息。並直接跳至最外層的End IF 結束此巨集

Else

Calculate

For I = 6 To 37

I = Application.WorksheetFunction.Sum(Range("A3:F3"))

If I > 6 Then

Calculate

Else

I = 37

End If

Next I

End If

End Sub

=========================================================


arrow
arrow

    黑天使 發表在 痞客邦 留言(0) 人氣()