【问题标题】:Google Sheets query sum counted columnsGoogle 表格查询总和计数列
【发布时间】:2021-03-25 21:42:00
【问题描述】:

我正在尝试计算与正则表达式模式匹配的所有单元格。到目前为止,我已经提出了一个解决方案,即每列使用 query,然后使用 SUM() 对不同列的计数求和。

这相当笨拙,查询中的更改意味着我需要更改很多单元格和部分公式。理想情况下,我有一个对查询中的计数求和的解决方案,或者其他更易于维护的解决方案。

我现在拥有的:

=sum(
  query(I10:I19,"select count(I) where I matches '^[A-Za-z\s]{4,64}$' label count(I) ''"),
  query(J10:J19,"select count(J) where J matches '^[A-Za-z\s]{4,64}$' label count(J) ''"),
  query(K10:K19,"select count(K) where K matches '^[A-Za-z\s]{4,64}$' label count(K) ''"),
  [etc. etc.]
)

我最理想的:

=query(I10:L19,"select sum(count(J),count(K),count(L)) where L matches '^[A-Za-z0-9\s\-]{4,64}$' OR J matches '^[A-Za-z0-9\s\-]{4,64}$' OR K matches '^[A-Za-z0-9\s\-]{4,64}$' label sum(*) ''")

但似乎不支持在sum() 中嵌套count()s。

有没有办法实现这样的目标?

注意label count(X) '' 是去掉任何标签和标题,并在第一个单元格中获取结果。

【问题讨论】:

    标签: google-sheets google-sheets-formula array-formulas


    【解决方案1】:

    您可以用完全不同的公式替换您的查询。

    请尝试以下一个

    =ArrayFormula(COUNTIF(REGEXMATCH(I10:K19,"^[A-Za-z\s]{4,64}$"),true))

    如果您真的坚持使用查询,请尝试以下操作

    =query(flatten(I10:K19),"select count(Col1) where Col1 matches '^[A-Za-z\s]{4,64}$' label count(Col1) ''")
    

    (正则表达式只是您分享的那个的副本。如果仍然需要,请分享一张测试表。)

    使用的功能:

    【讨论】:

    • 出于好奇。 ArrayFormula 公式是否按预期对您有用?
    【解决方案2】:

    你可以使用字符串连接

    查询只是一个字符串,因此您可以将您的正则表达式查询放在一个单独的单元格中,如果您的正则表达式位于名为“Regex”的工作表和单元格 A1 中,这将使您的公式看起来像这样值为="'^[A-Za-z\s]{4,64}$'"

    =sum(
      query(I10:I19,"select count(I) where I matches" & Regex!A1 & "label count(I) ''"),
      query(J10:J19,"select count(J) where J matches" & Regex!A1 & "label count(J) ''"),
      query(K10:K19,"select count(K) where K matches" & Regex!A1 & "label count(K) ''"),
      [etc. etc.]
    )
    

    参考

    查询的值必须用引号引起来,或者是对包含相应文本的单元格的引用。

    【讨论】:

      猜你喜欢
      • 2021-05-01
      • 1970-01-01
      • 2020-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-10
      • 1970-01-01
      相关资源
      最近更新 更多