2015-11-05 76 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

這絕對是更快,謝謝! –