Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3761|回复: 11

[已解决]如何批量自动生成随机数表,已有一个随机数生成表 求教大神改怎么改动成我要的那种

[复制链接]
发表于 2016-4-8 14:42 | 显示全部楼层 |阅读模式
本帖最后由 ellick1988 于 2016-4-8 14:44 编辑

如题
如何批量自动生成随机数表,已有一个随机数生成表 求教大神改怎么改动成我要的那种,数据要求已在附件里
感谢lichuanboy44大神 帮我做的随机数生成表格,我想在他的随机数生成表格上进一步修改下 麻烦大神帮帮忙
随机生成.rar (12.79 KB, 下载次数: 8)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-4-8 15:15 | 显示全部楼层
  1. Sub 随机()
  2.     [b2:e9] = ""
  3.     For h = 2 To 9   '2--9行
  4.         gs = Int(4 * Rnd)      '每行的随机个数0--3
  5.         If gs > 0 Then
  6.             up = 5 * h - 5: low = 5 * h - 9     '随机数大小范围
  7.             For j = 1 To gs
  8.                 wz = Int((Rnd * 4) + 1)    '随机数出现的位置(列数1--4)
  9.                 If Cells(h, wz + 1) <> "" Then j = j - 1 Else Cells(h, wz + 1) = Int(Rnd * (up - low + 1) + low)  '如果该位置已有数据,重新生成
  10.             Next
  11.         End If
  12.     Next
  13. End Sub
复制代码

随机生成.rar

14.14 KB, 下载次数: 24

回复

使用道具 举报

 楼主| 发表于 2016-4-8 15:47 | 显示全部楼层
grf1973 发表于 2016-4-8 15:15

大神!你的回答加解析太有用了!! 谢谢你!
是了 大神 这套宏还能不能编制成输入指定数值 然后就在原表格往下 生成指定数值组数据??
回复

使用道具 举报

发表于 2016-4-8 16:20 | 显示全部楼层
当然可以。代码中用行h控制。代码中h=2 to 9,完全可以改成2 to 100的。。。。
回复

使用道具 举报

 楼主| 发表于 2016-4-8 16:43 | 显示全部楼层
grf1973 发表于 2016-4-8 16:20
当然可以。代码中用行h控制。代码中h=2 to 9,完全可以改成2 to 100的。。。。

大神  我按你说的改成了 2 to 100 然后程序变得只能运行一次生成数据后,点第二次excel就死机了。。。
并且对于数据大小的范围它是一直累加上去了。。。而不是按第一个表的范围要求填写。。。。。求解
还有 大神能教我单独定义每行出现数值的大小吗 很多时候填表 里面的要求每行都很不一样没有规律可循的
回复

使用道具 举报

发表于 2016-4-8 16:55 | 显示全部楼层    本楼为最佳答案   
用数组uparr,lowarr来控制每行随机数的上下限,数组写多长,就可以弄多少行。
另外刚才的代码测试了一下2 to 100,没有任何问题。
  1. Sub 随机()
  2.     [b2:e100] = ""
  3.     uparr = Array(5, 10, 15, 20, 25, 30, 35, 40)
  4.     lowarr = Array(1, 6, 11, 16, 21, 26, 31, 36)
  5.     For h = 0 To UBound(uparr)   '2--9行
  6.         gs = Int(4 * Rnd)      '每行的随机个数0--3
  7.         If gs > 0 Then
  8.             up = uparr(h): low = lowarr(h) '随机数大小范围
  9.             For j = 1 To gs
  10.                 wz = Int((Rnd * 4) + 1)    '随机数出现的位置(列数1--4)
  11.                 If Cells(h + 2, wz + 1) <> "" Then j = j - 1 Else Cells(h + 2, wz + 1) = Int(Rnd * (up - low + 1) + low) '如果该位置已有数据,重新生成
  12.             Next
  13.         End If
  14.     Next
  15. End Sub
复制代码
回复

使用道具 举报

发表于 2016-4-8 17:08 | 显示全部楼层
死机可能是因为原来你的第10行是合并单元格,删掉后就没事了。

随机生成.rar

15.41 KB, 下载次数: 9

回复

使用道具 举报

 楼主| 发表于 2016-4-8 17:38 | 显示全部楼层
grf1973 发表于 2016-4-8 16:55
用数组uparr,lowarr来控制每行随机数的上下限,数组写多长,就可以弄多少行。
另外刚才的代码测试了一下2 ...

非常感谢大神的耐心回答!! 这套程序对于我这种小白已经很简洁易懂及可定义很高,如果数据量小已经可以很好满足我的需求了,但是大神 如果我有好几百组数据要出,如果按照这套程序那就得填写uparr   lowarr 里面的几百组定义值。。。。
求教大神 可不可以简洁点 让后面生成的数值大小套用最开始那套定义域?PS:有个小问题想问下 我刚测试时 发现填写的数据只能是整数?不能是小数吗?
回复

使用道具 举报

发表于 2016-4-8 20:07 | 显示全部楼层
你上个较大数据量的附件吧
回复

使用道具 举报

 楼主| 发表于 2016-4-8 23:07 | 显示全部楼层
grf1973 发表于 2016-4-8 20:07
你上个较大数据量的附件吧

随机生成目标表格.rar (19.78 KB, 下载次数: 5)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-26 23:49 , Processed in 0.297034 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表