optimization - 降低这个公式的复杂性?

标签 optimization google-sheets array-formulas

我对优化 Google 表格中使用的公式有疑问:

=ARRAYFORMULA(
  IF(
    IFERROR(
      MATCH($B2 & A2, ($B$1:B1) & ($A$1:A2), 0),
      0
    ) = 0,
    1,
    0))

该公式的工作原理是对 A 列 (ID) 中出现在 B 列(日期)的日期范围内的所有唯一值进行计数,以在 C 列(计数)中给出输出。

请注意计数值只有 0 和 1,并且仅当 ID 在日期范围内首次出现时才会显示 1。

下面的示例数据。

ID  Date    Count
138 Oct-13  1
138 Oct-13  0
29  Oct-13  1
29  Nov-13  1
138 Nov-13  1
138 Nov-13  0

问题是,一旦我要解析的行数超过 10000 行,公式就会变得很慢,并且需要一个多小时才能完成计算。我想知道是否有人对如何优化这个公式有建议,这样我就不需要让它运行这么长时间了。

谢谢

最佳答案

我一直在尝试一些公式,我认为这个公式效果更好,但在 10000 行之后仍然变得相当慢。

=IF(COUNTIF((FILTER($A$1:$A2, $B$1:$B2 = $B2)),$A2) = 1, 1, 0)

编辑

这是 Google 产品论坛上发布的附加公式,只需将其放入一个单元格中,然后自动填充即可。这是迄今为止我找到的最好答案。

=ArrayFormula(IF(LEN(A2:A),--(MATCH(A2:A&B2:B,A2:A&B2:B,0)=ROW(A2:A)-1),))

关于optimization - 降低这个公式的复杂性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48410026/

相关文章:

postgresql - 使用Google电子表格中的Google Apps脚本连接到Postgresql数据库

c# - 为什么我在使用 FormulaArray 时不断收到 COM 异常

php - 如何有效获取匹配的 Amazon S3 文件列表?

c++ - 在 GCC 4.1.1 中优化文件中单个函数的方法是什么?

mysql - 此 SQL 查询是否创建临时表?

google-apps-script - 选择列的最后一个值

excel - 在 Excel 数组公式结果中查找匹配项

php - 在 php 中读取数据的 mysql 或 csv 哪个好

button - 谷歌表格 : delete rows containing specified data

javascript - Google 电子表格脚本编辑器 : How to replace empty cells with a default value of 0