![执行 n 次计算并求和结果(无需 VBA)](https://linux22.com/image/1423606/%E6%89%A7%E8%A1%8C%20n%20%E6%AC%A1%E8%AE%A1%E7%AE%97%E5%B9%B6%E6%B1%82%E5%92%8C%E7%BB%93%E6%9E%9C%EF%BC%88%E6%97%A0%E9%9C%80%20VBA%EF%BC%89.png)
我正在寻找一种方法来对执行给定、任意次数的计算的结果进行求和。
假设我有 15,000 名客户,每个客户将花费 100 至 200 美元,我想计算总收入。
所以我想计算 Int(Randbetween(100,200)) 15,000 次并求和。
由于各种原因,我不想这样做: - 在 15,000 个单元格中重复公式 - 使用循环引用和 Excel 的内置迭代 - 使用 VBA 代码 - 使用蒙特卡罗插件
我预感到有一个简单而优雅的解决方案,但我一直没找到。
答案1
为了使此计算在一个单元格中起作用,随机填充的数组必须在每一行中填充不同的数字。据我所知,Excel 不是这样工作的。RANDBETWEEN() 公式在数组的每一行中使用相同的数字。
例如:
我在空白工作表的一个单元格中输入了以下公式。
=RANDBETWEEN(100,200)&A1:A10
我突出显示了整个公式,然后按 F9 在公式栏中进行计算。Excel 返回:
{"180";"180";"180";"180";"180";"180";"180";"180";"180";"180";"180"}
如果有一个公式可以强制 Excel 每行都生成一个新数字,则可以使用该公式。
答案2
假设列A您的工作表不包含任何数据,您可以使用以下公式计算 100 到 200 之间的 15,000 个随机数的总和。
将此公式放入单元格中B1
=SUMPRODUCT(($A1:$A15000="")*RANDBETWEEN(100,200))
如果您使用列A,我建议隐藏它,因为所选列中的所有行都需要保持空白。因此,我可能会倾向于使用类似Z Z或最后一个可用列。
添加:
或者,从操纵变量的角度来看,这可能是一个更好的解决方案:
SUMPRODUCT((OFFSET($A$1,,,15000)="")*RANDBETWEEN(100,200))