Excel精英培训网

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

[已解决]这样的随机数如何选

[复制链接]
发表于 2014-4-10 14:01 | 显示全部楼层 |阅读模式
本帖最后由 pengyx 于 2014-4-10 14:04 编辑

选N个随机数
条件1、随机数大于K1且小于K2(K1、K2为正整数)
  2、随机数为正整数
  3、在N个随机数中有且只有M个数,小于N个随机数的算术平均值
要求:1、用VBA实现
   2、K1、K2、N、M在文本框中输入,在代码中引用
   3、将N个随机数打印在EXCEL表中,打印位置和格式不限,但本次选的N个数不能复盖上一次选的N个数。也就是说,每次执行宏的结果都要保存在表中
           4、将M个数标记为红色
           5、M个数在N个数中的位置随机
最佳答案
2014-4-11 15:00
电脑累不死的,让它慢慢撞运气好了。。。。。
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-4-11 14:10 | 显示全部楼层
  1. Sub 生成随机数()
  2.     k1 = [b1]: k2 = [b2]: n = [b3]: m = [b4]
  3.     Randomize
  4. aa: ReDim brr(1 To n, 1 To 1)
  5.     s = 0: k = 0
  6.     For i = 1 To n
  7.         brr(i, 1) = Int((k2 - k1 + 1) * Rnd + k1)   '生成k1和k2之间的随机数
  8.         s = s + brr(i, 1)
  9.     Next
  10.     av = s / n         '平均数
  11.     For i = 1 To n
  12.         If brr(i, 1) < av Then k = k + 1
  13.         If k > m Then GoTo aa
  14.     Next
  15.     If k < m Then GoTo aa
  16.     c = [iv1].End(xlToLeft).Column + 1
  17.     Cells(1, c).Resize(n, 1) = brr
  18.     For i = 1 To n
  19.         If brr(i, 1) < av Then Cells(i, c).Interior.Color = vbRed
  20.     Next
  21. End Sub
复制代码
回复

使用道具 举报

发表于 2014-4-11 14:11 | 显示全部楼层
表1的按钮随便按,按一次多一列。

工作簿1.rar

9.97 KB, 下载次数: 15

回复

使用道具 举报

 楼主| 发表于 2014-4-11 14:35 | 显示全部楼层
grf1973 发表于 2014-4-11 14:11
表1的按钮随便按,按一次多一列。

灰常感谢你
if k>m then goto aa
next
if k<m then goto aa
感觉是在撞运气。有没有更好的办法
回复

使用道具 举报

发表于 2014-4-11 15:00 | 显示全部楼层    本楼为最佳答案   
电脑累不死的,让它慢慢撞运气好了。。。。。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-16 20:59 , Processed in 0.175086 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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