每十行增加一个计数器

我有一个超过50000行的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,floor为一个整数,并从1开始将索引加1。

我遇到的问题是超过5万行这需要Excel计算太多的时间,因为每行都必须计算所有行之前,然后计算一个数字(给它一个O(n ^ 2 )运行时,如果我记得我的algorithm讲座正确)。 必须有一个更有效的方法来做到这一点,我缺乏Excel的专业知识正在阻止我想到一个不同的解决scheme。

你将如何解决这个问题?

这可能会提高一些性能:

 =INT(ROW($A1)/10) + 1 

但是,如果你不需要这些值是dynamic的。 填写完第一个10k左右后,可以复制整列,然后粘贴为值。 这将消除对Excel进行连续计算的需要。

也可以在function区的“公式”选项卡的“计算选项”下将计算模式更改为手动。 然后,当你完成公式的扩展,打计算表。 这样,它不会连续计算每次你部分拖动公式到新单元格。