2015-11-05 49 views
1

我有一个超过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 
... 

当前的方式我有这样做的是插入此功能分为等分列的第一项,并把它复制到整列:

=INT(COUNTA($A1:A$2)/10) + 1 

,其对所有从A2行当前行,除以10,地板为整数,并增加了1到指数从1

开始我遇到的问题是,超过50,000行,这使得Excel需要花费大量的时间来计算,因为每一行都是如此它必须计算它之前的所有行,然后计算一个数字(如果我记得我的算法正确讲授,给它一个O(n^2)运行时间)。必须有一个更有效的方法来做到这一点,我缺乏Excel的专业知识正在阻止我考虑采用不同的解决方案。

你会如何解决这个问题?

回答

2

这可能会提供一些性能提升:

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

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

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

+0

这绝对是更快,谢谢! –