標題:
[發問]
excel vba 20個數字分組成4組(隨機)
[打印本頁]
作者:
tray1203
時間:
2014-12-4 12:30
標題:
excel vba 20個數字分組成4組(隨機)
本帖最後由 GBKEE 於 2014-12-4 15:38 編輯
麻煩各位大大幫我解題(我還是初學者 T^T)
就是有1~20個數字,想隨機分組成4組
可請大大們提供您的撰寫方式嗎?(並稍加注解)
感謝各位的幫忙
作者:
luhpro
時間:
2014-12-6 01:01
麻煩各位大大幫我解題(我還是初學者 T^T)
就是有1~20個數字,想隨機分組成4組
可請大大們提供您的撰寫方式 ...
tray1203 發表於 2014-12-4 12:30
Sub nn()
Dim iI%, iJ%, iMax%, iGet% ' 定義整數
Dim sStr$ ' 字串
Dim vA(), vT() ' 陣列
Randomize (Rnd) ' 初始化亂數
vA = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20) ' 宣告陣列包含每個數字 (1~20)
ReDim vT(4, 0) ' 設定標的陣列的初始大小
iMax = 20 ' 20 個數字
Do While iMax > 0 ' Do 迴圈開始,當計數值大於0則繼續執行迴圈
For iI = 0 To 4 ' For 迴圈開始,每組5個數字(0 ~ 4, 共4組)
iGet = Int((iMax - iI - 1 + 1) * Rnd + 1) ' 抓取下個數字
vT(iI, UBound(vT, 2)) = vA(iGet - 1) ' 存到標的陣列
For iJ = iGet To iMax - iI - 1
vA(iJ - 1) = vA(iJ) ' 將該數字之後的元素依序填補上來
Next
If UBound(vA) > 0 Then f ' If 條件式開始(若尚未到最後一個數字)
ReDim Preserve vA(UBound(vA) - 1) ' 則陣列元素數量減 1
Else ' 否則
Erase vA ' 清除該陣列
End If ' If 條件式結束
Next ' For 迴圈結束
If UBound(vT, 2) < 3 Then ReDim Preserve vT(4, UBound(vT, 2) + 1) ' 若尚未處理完成, 標的陣列新增存放下1組5 (0 ~ 4)個數字的空間
iMax = iMax - 5 ' 計數值減去1組的數量 (5)
Loop ' Do 迴圈結束
sStr = "" ' 底下將各元素依序放入 sStr 變數內, 以便後續顯示隨機分組結果用
For iMax = 0 To 3 ' 4組設字
For iI = 0 To 4 ' 每組5個數字
If sStr <> "" Then
sStr = sStr & ", " & vT(iI, iMax) ' 非首次添加數字, 前面加上 , 做為數字的區隔
Else
sStr = vT(iI, iMax) ' 首次添加數字, 前面不加 ,
End If
Next
sStr = sStr & Chr(10) ' 1組數字添加完成, 加上換行字元
Next
MsgBox sStr
End Sub
複製代碼
作者:
ashan0418
時間:
2014-12-10 09:36
回復
1#
tray1203
Sub test()
Dim Ary(1, 19), Rng As Range
Cells.Clear
[a1] = "資料"
[b1] = "亂數排列"
For i = 0 To 19
Ary(0, i) = i + 1
Ary(1, i) = Int(Rnd() * 100) '取亂數值
Next
With ActiveSheet
Set Rng = .[a2:b2].Resize(UBound(Ary, 2) + 1) '設定儲存格數
Rng.Value = Application.Transpose(Ary) '將Ary的陣列資料存入儲存格中
[a2:b2].Resize(UBound(Ary, 2) + 1).Select '選取儲存格的資料
Selection.Sort Key1:=Rng(2), Order1:=xlAscending, Header:=xlNo '依亂數由小至大排序
End With
For i = 1 To 4
Cells((i - 1) * 5 + 2, 1).Resize(5).Copy
Cells(i + 1, 4) = "第 " & i & " 組"
Cells(i + 1, 5).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True '儲存格轉置
Next
End Sub
複製代碼
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)