0

我知道在 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. 当数据集变得非常大(比如 10 万行)时,哪种方法的性能更好?第一种方法的开销似乎更少。因为在A列(Value)中添加新值时,B列的新单元格只需要做“ B(n-1)+A(n)”。在第二种方法中,做类似的事情是否足够聪明?或者它将添加 100k 行A1:A(n)

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

4

1 回答 1

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。

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

于 2013-07-11T12:51:58.260 回答