返回列表 上一主題 發帖

抽獎的巨集

回復 5# yeh6712
還有寫法,可研究.
  1. Option Explicit
  2. Sub Ex1()
  3.     Dim i, J
  4.     UsedRange.Offset(1, 2) = ""
  5.     Do Until i + 1 = [B1].End(xlDown).Row                  '獎項
  6.         J = Int((([A1].End(xlDown).Row - 1) * Rnd) + 1)    '亂數介於 1 - 人員數量 之間
  7.         If Range("C" & J + 1) = "" Then
  8.             Range("C" & J + 1) = i + 1
  9.             Range("D" & i + 2) = Range("A" & J + 1)
  10.             i = i + 1
  11.         End If
  12.     Loop
  13. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 8# yeh6712
  1. Option Explicit
  2. Sub Ex1()
  3.     Dim i As Integer, J As Integer, A As Integer, AJ(), AA()
  4.     UsedRange.Offset(1, 2) = ""
  5.     ReDim AJ(1 To [B1].End(xlDown).Row - 1)
  6.     ReDim AA(1 To [A1].End(xlDown).Row - 1)
  7.     '**** 人人有獎(一項)
  8.     Do Until i + 1 = [A1].End(xlDown).Row                  '人員
  9.         J = Int((([B1].End(xlDown).Row - 1) * Rnd) + 1)    '亂數介於 1 - 獎項數量 之間
  10.         If AJ(J) = "" Then
  11.             A = Int((([A1].End(xlDown).Row - 1) * Rnd) + 1)    '亂數介於 1 - 人員數量 之間
  12.             If AA(A) = "" Then
  13.                 AJ(J) = J
  14.                 AA(A) = J
  15.                 Range("C" & J + 1) = Range("A" & A + 1)        '獎品得獎人員
  16.                 i = i + 1
  17.             End If
  18.         End If
  19.     Loop
  20.     '**** 抽出剩餘的獎項
  21.     For J = 1 To UBound(AJ)
  22.         If AJ(J) = "" Then     '未抽出的獎項
  23.             Do
  24.                 A = Int((([A1].End(xlDown).Row - 1) * Rnd) + 1)    '亂數介於 1 - 人員數量 之間
  25.                 If InStr(AA(A), ",") = 0 Then         'InStr(AA(A), ",") = 0;排除得2個以上獎項
  26.                     AA(A) = AA(A) & "," & J
  27.                     Range("C" & J + 1) = Range("A" & A + 1)
  28.                     Exit Do
  29.                 End If
  30.             Loop
  31.         End If
  32.     Next
  33.     [D2].Resize(UBound(AA)) = Application.WorksheetFunction.Transpose(AA)  '人員的得獎獎品
  34. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 信心、毅力、勇氣三者具備,則天下沒有做不成的事。
返回列表 上一主題