Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 使用不同的参数运行模拟数次并存储值_Excel - Fatal编程技术网

Excel 使用不同的参数运行模拟数次并存储值

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执

考虑一个电子表格,它基于一个固定值(在下面的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执行此操作?宏?请注意,上面的例子是真实事物的简化版本。应该很清楚,我需要计算
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也为这种类型的需求提供了一些内置的解决方案。在帮助中查找“场景”和“数据表”,作为“假设分析”的一部分。