excel - 每十行增加一个计数器

标签 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 专业知识使我无法考虑不同的解决方案。

你会如何解决这个问题?

最佳答案

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

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

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

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

关于excel - 每十行增加一个计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33555470/

相关文章:

c# - 如何在 C# 中检查 Excel 范围是否为空

java - 确定函数:的运行时间

java - 为什么 getThreadAllocatedBytes 不一致?

vba - 删除重复项(大量数据,非常慢)

vba - 如何修复 "Compile Error: Object Required"错误?

java - 从 Excel 文件或 CSV 文件中读取效率更高吗?

mysql - SQL查询和计数

c++ - 如何在C/C++中计算最多1000位的数字的位数

sql - Oracle 查询 - 如何计算返回值为 0 的值

android - 在运行时添加时的子菜单 showAsAction