通过excel宏在一列内填入随机数

如题所述

Sub 在选择范围内插入1到100随机数()
Dim e As Range '注释e作为区域,也就是一个单元格吧
For Each e In Selection '任何在选择区域中的 的单元格进行逐一扫描计算
e = Int(Rnd() * 100) + 1 '将随机数填入单元格
Next
End Sub追问

请问 e 可以随机成多个单元格吗,例如这次选10个,下次选12个

追答

可以的,你可以随自己选择单元格,我发图你看吧!

先选择你要生成你随机数的范围:

然后运行宏:

最后就可以得到你需要填入的随机数(单元格的数量按照你自己选)

 

你还可以加上一个清除单元格内容的语句,如下:

    For Each e In Selection

    e.ClearContents

    Next

追问

有粘贴=rand()到A1至AX的语句吗,就是说后面的是随机的,另外在A(X+1)上运行另一个宏,就是自动选择AX下一个格进行进一步的操作

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-06-02
在a1单元格输入:
=int(rand()*31+1000)
然后在a1单元格输入数组公式:
=large(if(countif(a$1:a1,999+row($1:$31))=0,999+row($1:$31)),max(int(rand()*(31-count(a$1:a1))),1))
这个公式按ctrl+shift+enter结束
然后选择a2单元格,下拉填充,出现#num!为止
按f9刷新
1016
1017
1027
1002
1001
1030
1004
1019
1029
1012
1007
1014
1013
1020
1024
1006
1025
1026
1028
1011
1023
1022
1003
1005
1008
1015
1010
1021
1018
1009
1000
#num!
#num!
第2个回答  2012-09-19
学习中。。。
第3个回答  2012-09-16
在Excel可以用Rand()函数,在VBA中可用application.worksheetfunction.rand()返回01之间去均分布的随机数,也可以利用RANDBETWEEN 函数返回位于指定的两个数之间的一个随机整数。
操作时,可以在希望产生随机数的列单元格内,先选定区域,然后输入:=rand(),或者其他公式。
由于这两个函数,在每次excel计算时,都会重新计算,产生符合条件的新的随机数,要想一次生成后就固定他们,可以采用选择性粘贴为数值的方法。
函数说明见下面:
1、RAND 函数
返回大于等于 0 及小于 1 的均匀分布随机实数,每次计算工作表时都将返回一个新的随机实数。语法RAND( )注解若要生成 a 与 b 之间的随机实数,请使用: RAND()*(b-a)+a如果要使用函数 RAND 生成一随机数,并且使之不随单元格计算而改变,可以在编辑栏中输入“=RAND()”,保持编辑状态,然后按 F9,将公式永久性地改为随机数。
2、RANDBETWEEN 函数
返回位于指定的两个数之间的一个随机整数。每次计算工作表时都将返回一个新的随机整数。语法RANDBETWEEN(bottom,top)Bottom 函数 RANDBETWEEN 将返回的最小整数。Top 函数 RANDBETWEEN 将返回的最大整数。

同时,VBA中可以不用application.worksheetfunction.,而直接利用vb函数Rnd 函数返回一个包含随机数值的 Single。
请参阅:
语法
Rnd[(number)]
可选的 number参数是 Single 或任何有效的数值表达式。
返回值
如果 number 的值是Rnd 生成
小于 0 每次都使用 number 作为随机数种子得到的相同结果。
大于 0 序列中的下一个随机数。
等于 0 最近生成的数。
省略 序列中的下一个随机数。

说明
Rnd 函数返回小于 1 但大于或等于 0 的值。
number 的值决定了 Rnd 生成随机数的方式。
对最初给定的种子都会生成相同的数列,因为每一次调用 Rnd 函数都用数列中的前一个数作为下一个数的种子。
在调用 Rnd 之前,先使用无参数的 Randomize 语句初始化随机数生成器,该生成器具有根据系统计时器得到的种子。
为了生成某个范围内的随机整数,可使用以下公式:
Int((upperbound - lowerbound + 1) * Rnd + lowerbound)

这里,upperbound 是随机数范围的上限,而 lowerbound 则是随机数范围的下限。
注意 若想得到重复的随机数序列,在使用具有数值参数的 Randomize 之前直接调用具有负参数值的 Rnd。使用具有同样 number 值的 Randomize 是不会得到重复的随机数序列的。本回答被网友采纳
相似回答