我知道两种在 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个问题:
当数据集变得非常大(例如 100k 行)时,哪种方法性能更好?第一种方法似乎开销较小。因为在 A 列(值)中添加新值时,B 列中的新单元格只需执行“
B(n-1)+A(n)
”。第二种方法在哪里,它足够智能来做类似的事情?或者它会从中添加 100k 行A1:A(n)
?计算累积值的最佳方法是什么?我发现第二种方法更受欢迎,尽管我怀疑它的性能。我现在能看到的第二种方法的唯一优点是 B 列单元格中的公式更一致。在第一种方法中,B 列中的第一个单元格必须事先确定。
答案1
我没有任何确凿的证据,但是我只是在我的 excel(虽然是 2007 版)上尝试了所有可能的行(1,048,576 行),公式SUM()
告诉我没有足够的资源来执行操作(在询问我是否真的想继续之后,因为我无法撤消操作),而您的第一种方法大约需要 14 秒即可完成。
因此,我相信您说得对,第一种方法的开销较少。
与第一种方法相比,其优点可能SUM()
在于,如果单元格中有一个有问题的值(例如文本值),SUM()
则不会抛出错误并继续愉快地计数(文本被视为 0),而第一种方法将立即抛出#VALUE!
并停止在列中的任何其他后续单元格中正确计算。