每十行增加一个计数器

时间:2015-11-05 21:50:25

标签: excel count runtime

我有一个包含超过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专业知识阻碍了我思考不同的解决方案。

你会如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

这可能会带来一些性能提升:

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

但是,如果您不需要这些值是动态的。填写前10k左右后,您可以复制整列,然后粘贴为值。这将消除excel进行连续计算的需要。

您还可以在功能区的“计算选项”下的“公式”选项卡中将计算模式更改为手动。然后,当您完成扩展公式后,点击计算表。这样,每次将公式部分拖动到新单元格时,它都不会连续计算。