【发布时间】:2016-02-06 22:21:45
【问题描述】:
我有一个超过 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 专业知识使我无法考虑不同的解决方案。
你会如何解决这个问题?
【问题讨论】: