【问题标题】:How to use REGEXEXTRACT only on rows that contain a cell which contain a string within a SUM?如何仅在包含 SUM 中包含字符串的单元格的行上使用 REGEXEXTRACT?
【发布时间】:2020-04-23 09:25:55
【问题描述】:

如果我的数据集是:

|                  H              |   U  |   |   |   |
| 100 Main St, Berkeley, CA       | $200 |   |   |   |
| 200 Other St, San Francisco, CA | $400 |   |   |   |
| 300 This St, Oakland, CA        | $250 |   |   |   |
| 111 That St, San Francisco, CA  | $90  |   |   |   |

对于包含“旧金山”一词的行,我如何获得 D 列中所有值的总和?这个数据集在 Sheet1 上,而我的公式在 Sheet2 上 目前,我使用这个公式来总结所有行,而不管他们所在的城市。

=ArrayFormula(sum(iferror(REGEXEXTRACT(Sheet1!U2:U918&".","\$?([0-9]+)[.,]")*1)))

但我尝试使用 SUMIF 和 Regexmatch 作为 ArrayFormula 的第一个参数,但这些都不起作用。

更新:

player0 给了我答案(我在它周围加了一个总和,以便准确地输出我想要的东西)。

=SUM(ARRAYFORMULA(QUERY({Onfleet!H2:H, REGEXEXTRACT(TO_TEXT(Onfleet!U2:U), "\d+")*1}, "select sum(Col2) where lower(Col1) contains 'oakland' group by Col1 label sum(Col2)''")))

【问题讨论】:

  • 您将数字显示为 D 中的地址和 C 中的地址,但您的公式看起来像是在尝试使用 U 列。也许您可以分享一个快速示例以更清楚地了解事物的位置?
  • 对不起,我会纠正它。我手动创建了虚拟数据,却忘记更改这些数据。

标签: regex google-sheets sum array-formulas google-sheets-query


【解决方案1】:

使用这个公式:

=ARRAYFORMULA(QUERY({Sheet1!H2:H, REGEXEXTRACT(TO_TEXT(Sheet1!U2:U), "\d+")*1}, 
 "select Col1,sum(Col2) 
  where lower(Col1) contains 'san francisco' 
  group by Col1 
  label sum(Col2)''"))

【讨论】:

  • 我需要在 U 列上运行 REGEXEXTRACT,因为它包含的销售额超过了销售额,我需要忽略该单元格中的其余文本。我已经更新了问题以表明这一点。
  • 我收到“无法解析函数查询参数 2 的查询字符串:类型错误:无法读取未定义的属性 'get'”错误。
  • 它现在给我一个“错误查询完成,输出为空。”
  • 你能分享一份你的工作表吗?
  • 我想出了确切的公式,我只是将 ARRAYFORMULA 包装在一个 SUM 中,然后从选择中删除 Col1。
猜你喜欢
  • 2015-07-16
  • 2017-08-28
  • 1970-01-01
  • 1970-01-01
  • 2021-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-04
相关资源
最近更新 更多