Microsoft Excel累积计算性能

时间:2013-07-07 07:01:10

标签: performance excel-formula excel-2010

我知道在Excel中计算累积值的两种方法。

第一种方法:

A         B
Value     Cumulative total
9         =A1
8         =B1+A2
7         =B2+A3
6         =B3+A4

第二种方法:

A         B
Value     Cumulative total
9         =SUM($A$1:A1)
8         =SUM($A$1:A2)
7         =SUM($A$1:A3)
6         =SUM($A$1:A4)

2个问题:

  1. 当数据集真的很大(比如100k行)时,哪种方法有更好的性能?第一种方法似乎具有较少的开销。因为在A列(值)中添加新值时,B列中的新单元格只需要执行“B(n-1)+A(n)”。在第二种方法中,它是否足够聪明地做类似的事情?或者它会从A1:A(n)添加100k行?

  2. 计算累积值的最佳方法是什么?我发现第二种方法更受欢迎,但我怀疑它的性能。我现在可以看到的第二种方法的唯一优势是B列单元格中的公式更加一致。在第一种方法中,B列中的第一个单元必须预先确定。

1 个答案:

答案 0 :(得分:1)

数字序列9,8,7,6,-9,-8,-7,-6;工作簿设置为手动计算,由以下代码触发:

Sub ManualCalc()
Dim R As Range

    Set R = Selection
    [F1] = Now()
    R.Worksheet.Calculate
    [F2] = Now()
    [F3] = ([F2] - [F1]) * 86400

End Sub

4096行计算时间对于两种变体都不可测量(0秒),在65536行,第一种方法仍然无法测量,第二种方法在我的笔记本电脑上需要不到8秒(Dell Latitude E6420,Win7, Office2010 - 每次平均3次测量。因此,对于大量行,我更喜欢方法1。

关于你的Q1 ...是的,它会增加10万不断增长的范围... Excel不应该是聪明的,它应该计算你要求它计算的任何东西。如果确实如此,它会在运行时解释一组公式的意图,我认为这非常危险!