【问题标题】:How to optimize COUNTIFS with very large data如何使用非常大的数据优化 COUNTIFS
【发布时间】:2015-03-15 18:56:12
【问题描述】:

我想创建一个如下图所示的报告。
我的数据有大约 500,000 个单元格(它会继续变大)

现在,我正在使用 excel 中的 countifs 函数,但计算需要很长时间。 (无法关闭自动计算)

主要值收集为日期,日期范围约为 3 年,所以我必须放很多公式来覆盖所有值范围。

result

下图是数据源,顶部不能更改。 ,而底部是我自己创建的(可以更改)。我使用 weeknum 将日期更改为周数。

data

有没有更好的公式或任何方法可以使这个文件更快?欢迎各种建议!
我正在考虑使用数据透视表,但我不知道如何从这种数据源制作数据透视表。
PS。 VBA 是最后的选择。

您可以在这里下载示例文件:https://www.mediafire.com/?t21s8ngn9mlme2d

【问题讨论】:

  • 什么是“很长时间”?
  • 我的意思是计算时间。由于我必须创建 2 个级别的公式(1 将日期转换为 weeknum,另一个是根据条件计算 weeknum)
  • 我的意思是实际需要多长时间
  • 哦...大约 5-10 分钟取决于计算机。但这很烦人,因为每次我归档数据时,都会开始计算。而且我不能禁用自动计算功能,因为它会破坏文档的其他部分。所以,我想减少公式或使用其他公式或使用数据透视表来提高其性能。
  • @Krsnik195 在输入新数据时禁用自动计算怎么样?然后重新启用?

标签: excel optimization excel-formula large-data


【解决方案1】:

我使用过类似大小的 Excel 工作表。特别是如果您定期使用数据,我强烈建议您切换到基于 SQL、Access 或任何适合您目的的适当数据库。我对速度很感兴趣,而且您也不会遇到 Excel 的大小限制。 :-)

您可以很容易地导入您现在拥有的数据。 我很高兴拥有我的 postgresql 数据库。

【讨论】:

    【解决方案2】:

    我将发布此答案并声明它完全取决于数据集的大小。打开和关闭自动计算是最好的方法,但你的问题不允许我这样做,所以请继续阅读。

    你的问题让我很好奇,所以我试了一下并计时了。我基本上设置了两列超过 100,000 兰特的数字,从 1-1000 中选择,然后尝试对两列进行计数(如果它们相等)。我制作了一个可以运行的宏,它关闭自动计算,插入开始时间,计算,然后插入结束时间。我用黄色突出显示了时差。

    首先我尝试了你的方法,两个标准,countifs:

    然后我尝试合并(连接)这两列,看看是否可以通过仅使用一个 countif 标准和数据集来使其更容易。它没有。见下面的结果:

    终于,意识到发生了什么。我决定让标准只匹配要查找的数字中的第一个值。我基本上是在减少要检查每个单元格的字符数。这产生了积极的结果。见下文:

    因此,我的建议是尽可能限制您要比较的单词的长度。您主要查看日期,因此您可能需要发挥创意,但这似乎是无需手动计算的最佳方式。

    【讨论】:

    • 你的建议很有趣。我会尝试适应我的数据:)
    猜你喜欢
    • 1970-01-01
    • 2019-10-28
    • 2019-11-28
    • 1970-01-01
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    相关资源
    最近更新 更多