【问题标题】:Increment a counter every ten rows每十行增加一个计数器
【发布时间】: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 专业知识使我无法考虑不同的解决方案。

你会如何解决这个问题?

【问题讨论】:

    标签: excel count runtime


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-18
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 2015-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多