我有一个包含超过50,000行的Excel电子表格,并希望添加一个列,通过为向下每十行分配一个递增的数字,有效地将数据分组为十个。澄清一下,这就是我的目标:
Col A Col B Decile
1 * * 1
2 * * 1
3 * * 1
4 * * 1
5 * * 1
6 * * 1
7 * * 1
8 * * 1
9 * * 1
10 * * 1
11 * * 2
12 * * 2
13 * * 2
14 * * 2
...
199 * * 19
200 * * 19
201 * * 20
...
我目前的做法是将此函数插入Decile列的第一个条目并将其复制到整个列:
=INT(COUNTA($A1:A$2)/10) + 1
它计算从A2到当前行的所有行,除以10,将楼层除以整数,并将1加到从1开始的索引。
我遇到的问题是,对于超过50,000行,Excel会花费大量的时间来计算,因为对于每一行,它必须计算它之前的所有行,然后计算一个数字(给它一个如果我正确地记住我的算法讲座,那么O(n ^ 2)运行时间。必须有一种更有效的方法来做到这一点,而我缺乏Excel专业知识阻碍了我思考不同的解决方案。
你会如何解决这个问题?
答案 0 :(得分:3)
这可能会带来一些性能提升:
=INT(ROW($A1)/10) + 1
但是,如果您不需要这些值是动态的。填写前10k左右后,您可以复制整列,然后粘贴为值。这将消除excel进行连续计算的需要。
您还可以在功能区的“计算选项”下的“公式”选项卡中将计算模式更改为手动。然后,当您完成扩展公式后,点击计算表。这样,每次将公式部分拖动到新单元格时,它都不会连续计算。