Dzwebs.Net

撰写电脑技术杂文十余年

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

Admin | 2014-1-2 2:23:06 | 被阅次数 | 7477

温馨提示!

如果未能解决您的问题,请点击搜索;登陆可复制文章,点击登陆

  我们先来看看这个例子要解决的技术问题吧,如下图一样,在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


该杂文来自: Excel杂文

上一篇:Excel13个特殊函数

下一篇:Excel转换人民币为大写的函数方法与VBA方法

网站备案号:

网站备案号:滇ICP备11001339号-7

版权属性:

Copyright 2007-2021-forever Inc. all Rights Reserved.

联系方式:

Email:dzwebs@126.com QQ:83539231 访问统计