Excel 使用不同的参数运行模拟数次并存储值
考虑一个电子表格,它基于一个固定值(在下面的rxample中,Excel 使用不同的参数运行模拟数次并存储值,excel,Excel,考虑一个电子表格,它基于一个固定值(在下面的rxample中,D3)执行一些计算,并且是迭代的。例如 D3: 4 B3: 12 B4: 58 (=B3*$D$3+10) B5: 242 (=B4*$D$3+10) B6: 978 (=B5*$D$3+10) Total = 1290 (=sum(B2:B5)) 现在,假设我想尝试不同的D3(我们称之为p)值,并存储我得到的不同总数,即 P Total 4 1290 5 2252 6 3618 7 5460 我将如何使用Excel执
D3
)执行一些计算,并且是迭代的。例如
D3: 4
B3: 12
B4: 58 (=B3*$D$3+10)
B5: 242 (=B4*$D$3+10)
B6: 978 (=B5*$D$3+10)
Total = 1290 (=sum(B2:B5))
现在,假设我想尝试不同的D3
(我们称之为p
)值,并存储我得到的不同总数,即
P Total
4 1290
5 2252
6 3618
7 5460
我将如何使用Excel执行此操作?宏?请注意,上面的例子是真实事物的简化版本。应该很清楚,我需要计算B3
-B6
,这样我才能计算总和
更新:
每个计算需要几个列。例如,我们将使用
B3、B4、代码>和<代码>C3、C4代码>宏可以执行此操作。如果B7包含求和公式,请尝试以下操作
Sub RunSimulation()
Dim p as long
for p = 4 to 7
Range("D3")=p
Debug.Print Range("B7")
Range("L" & (p-1)) = Range("B7").Value
next
End Sub
编辑:根据请求添加一行用于存储结果
如果不想在工作表中输入总和公式,可以使用VBA计算总和:
Dim total as Long
Dim row as long
total = 0
for row = 2 to 5
total = total + Range("B" & row)
Next
Debug.Print total
(如果您处理的是浮点数,total
请使用Double
而不是Long
。通常按以下方式执行:
A B C D
1 x tmp1 tmp2 Total
2 3 $A2+10 $B2*10+10 $C2*$B2 The formulae are just for example.
3 $A2+1 $A3+10 $B3*10+10 $C3*$B3
4 $A3+1 $A4+10 $B4*10+10 $C4*$B4
Excel能够自动增加公式中的索引。+1。我更喜欢这个解决方案,如果真实的工作表不是太复杂,一行可以进行一次计算,一行没有太多不同的变量输入值,并且可以有一个包含所有中间结果的大工作表。否则,宏可能是更好的选择。@全部:每个计算需要几列和几行。它们可以移动到单行中。是的,生成的代码看起来像史蒂夫·麦康奈尔的噩梦,但没有人说Excel适合这种计算。@Lavir the Whiolet:你的建议将适用于分布在多行中的计算。如果事情不太复杂,可以构建块并在图纸周围复制它们。但如果事情变得如此混乱,我不会这么做。然后,正如我所说,Excel不适合这样的任务。您应该使用其他工具,如MATLAB(或Octave)、Mathematica、Ruby……使我的建议适应您的需要并不难。@Doc:不,没问题。我在Lavir的回答中补充了这一点。虽然您已经得到的答案对于这种情况来说很好,但Excel也为这种类型的需求提供了一些内置的解决方案。在帮助中查找“场景”和“数据表”,作为“假设分析”的一部分。