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条经验 获得超4个赞
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
提交
取消