六合开奖结果现场直播欢迎诸位!收藏本站注 册登 陆
常用三肖中特马:基础知识网络知识操作系统WPS网页制作数据库算法网页成功之路网络安全最新技术古典mid流行midmid背景下载中心
您现在的位置:首页 > 三肖中特马 > 文章页

满足随机总和让函数自动重新计算的例子

Admin | 2014-1-2 2:23:06 | ReadNums | 3237 | 标签 六合开奖结果现场直播 | 打印本页
     

  我们先来看看这个例子要解决的技术问题吧,如下图一样,在A2到C20这个范围,是随机生成的一序列数字!

Excel2014-1-2-1


  该序列数字是随机生成的,范围是从1到3,即大于等于1而小于等于3这个范围的随机数。如下图一样,随机数函数使用RANDBETWEEN。

Excel2014-1-2-2


  现在,我们要解决的问题是,如何保证让这些随机生成的这些数,它们的总和满足大于等于140这个值呢?随机数容易生成,但是满足这个总和就比较困难了。

  很多人都明白,只要我们双击单元格,那么,函数就会重新计算,所以,就会重新得到一序列的随机数。我们可以不断的双击单元格直到满足大于等于140为止,但是,这种概率是比较小的,也就是说,你双击一百次或一千次,也不一定就能得到这些随机数的总和刚好大于等于140。

  所以,我们得重新寻找另外一种方法,让电子表格不断的产生随机数,只要满足这个条件就停止产生随机数,由此我们就能得到想要的一序列随机数了。

  分析了问题之后,我们需要解决的问题就是,让随机公式不断的重新刷新计算,直到满足需要为止。按照原理,我们可以按下F9,就能让公式重新计算以产生不同的随机数,但是,这样相当费劲。所以,最好的办法还是VBA合适,因为它能够代劳我们。

  像下图一样,在工作表里面增加一个按钮。

Excel2014-1-2-3

  最后,给按钮添加如下图的代码即可。

Excel2014-1-2-4

  为方便大家的学习,代码粘贴如下:

  Dim iFlag As Boolean
  iFlag = True
  Do While iFlag
  If (WorksheetFunction.Sum(Range("A1:C20")) >= 140) Then
  iFlag = False
  Exit Sub
  Else
  ActiveSheet.Calculate
  End If
  Loop

  其中,ActiveSheet.Calculate的功能是让函数重新计算,这样就能产生不同的随机数了。

  If (WorksheetFunction.Sum(Range("A1:C20")) >= 140) Then,这就是随机数要满足的条件,总必须大于等于140


问题未解决:在线咨询

网友评论

(访客)
内容实用原创,讲得很好。
20xx年x月x日
(站长)
有问题请在线咨询。
20xx年x月x日