Private Sub Form_Click()Dim a(10) As IntegerRandomizeFor i = 0 To 9a(i) = Int(21 + 50 * Rnd()) '可以拆開嗎?NextFor i = 0 To 9Print a(i);Nextb = a(i)flag = 1 '假設不重復For i = 0 To 9If a(i) = b Thenflag = 0i = i - 1Exit ForEnd IfNextIf flag = 1 ThenPrint a(i)End IfEnd Sub為毛輸出以后最后一個數是0 我改啊改啊的總有一個倆數的重復
2 回答

夢里花落0921
TA貢獻1772條經驗 獲得超6個贊
給你兩個思路
1.每生成一個數
然后利用 application.worksheetfunction.countif(range("a:a"),新生成的數) 得出有沒有重復
沒有 則 ,就填入excel的格子內,比如按A列填下來
有則不填入excel
2.定義一個字符串 比如 str
沒生成一個數,就利用 instr(1,str,"-" & 新生成的數 & "-") 判斷在str 里面有沒有存在
沒有存在就是不重復,并利用 str = str & “-” & 新生成的數& "-" 更新str
看錯 以為是excel 的問題呢
那你采用 第二個思路試試

收到一只叮咚
TA貢獻1821條經驗 獲得超5個贊
Private Sub Form_Click() Dim a(10) As Integer Randomize For i = 0 To 9 a(i) = Int(21 + 50 * Rnd()) If i > 0 Then flag = 1 '假設不重復 For j = 0 To i - 1 If a(i) = a(j) Then flag = 0 i = i - 1 Exit For End If Next End If If flag = 1 Then Print a(i) Next End Sub
添加回答
舉報
0/150
提交
取消