EXCEL如何随机生成指定范围的不重复的整数?

A17中随机生成1-36之间的整数,A1EXCEL如何在指定的部分单元格内:A17之间的数字不能重复: 在A1?如,随机生成指定范围的不重复的整数。谢谢 补充问题:不用VB,不要用宏来实现。

用VBA编程可以实现。其方法有多种,一是字典功能,凡是重复的无法插入字典。其缺陷是程序运行的时间不确定,发生重复就继续生成随机数,直到没有重复为止。另一种是第一次生成1~100的随机数,将得到的随机数取走;再生成1~99的随机数,。。。这样循环到1,就完成了题目要求。
我们采用第二种方法做成如下代码:
Sub
随机数()
Dim
mYarr(1
To
100,
1
To
2)
Dim
Tarr(1
To
100,
1
To
2)
'存放随机生成的数
Dim
I,
J,
K,
L
As
Integer
'读取原始数据
I
=
2
Do
While
Cells(I,
1)
>
0
mYarr(I
-
1,
1)
=
Cells(I,
1)
mYarr(I
-
1,
2)
=
Cells(I,
2)
I
=
I
+
1
Loop
I
=
I
-
2
L
=
1
For
K
=
I
To
1
Step
-1
Randomize
J
=
Int((Rnd
*
K)
+
1)
Tarr(L,
1)
=
L
Tarr(L,
2)
=
mYarr(J,
2)
'将数值自J+1个开始向上移动一格
 
 
For
M
=
J
To
I
-
1
 
 
 
 
mYarr(M,
1)
=
mYarr(M
+
1,
1)
 
 
 
 
mYarr(M,
2)
=
mYarr(M
+
1,
2)
 
  
 
 
Next
M
L
=
L
+
1
Next
K
'输出随机整数
For
J
=
1
To
I
 
Cells(J
+
1,
5)
=
Tarr(J,
1)
 
Cells(J
+
1,
6)
=
Tarr(J,
2)
Next
J
End
Sub
该宏
第一步:将第1、2列数据读入MYARR数组
第二步:随机生成随机数,将该随机数对应的数值移入TARR数组(目标数组)
第三步:将目标数组TARR数值输出到第5、6列。运行结果如图:
可以看到G列检查是否有重复列,结果是没有。

温馨提示:答案为网友推荐,仅供参考
相似回答