【问题标题】:How sum a range of values when the criterion depends on multiple values spread along different columns当标准取决于沿不同列分布的多个值时,如何对一系列值求和
【发布时间】:2021-11-24 05:12:15
【问题描述】:

假设我们在 Google 表格中有以下表格:

A B C D E
1 a green apple apple =SUMIFS(A:A, B:B,"*" & D1 & "*", C:C,"*"&D1&"*")
1 Orange banana =SUMIFS(A:A, B:B,"*" & D2 & "*", C:C, "*" & D2 & "*")
20 a red apple
1 banana
1 kiwi
1 Banana

然后 E1 == 0 和 E2 == 2。这是因为如果所有范围的所有条件都为 TRUE,则 SUMIFS 对 B 列的值求和,这相当于说 SUMIFS 用 AND(逻辑)连接所有条件操作员。 我需要的是相同的 SUMIFS 操作,但使用 OR 运算符,以便 E1 == 21。

一种解决方案是连接 F 列中的 B 和 C 值,然后简单地使用这个公式
=SUMIF(F:F, "\*" & D1 & "\*", B:B)

有没有另一种方法可以做到这一点而不必创建另一个列?

由于有人编辑了标签,因此可以为 Google 表格、Excel、LibreOffice 和类似应用程序编写答案。感谢您的帮助!

【问题讨论】:

  • 为什么不=SUMIF(B:B;"*"&D1&"*";A:A)+SUMIF(C:C;"*"&D1&"*";A:A)
  • 加了两次,那我的数字不正确

标签: google-sheets google-sheets-formula formula


【解决方案1】:

如果您的实际应用程序只需要在 either 的两列中从 D:D 中找到 任何 项,然后返回一个最终总数,则可以使用以下方法:

=ArrayFormula(SUM(FILTER(A:A,NOT(ISERROR(REGEXEXTRACT(LOWER(B:B&"~"&C:C),JOIN("|",FILTER(LOWER(D:D),D:D<>""))))))))

如果您的实际应用程序需要在多于两列中从 D:D 中找到 任何 项,然后返回一个最终总数,您可以继续加入这样的列 — B:B&"~"&C:C — 或使用这样的公式:

=ArrayFormula(SUM(FILTER(A:A,NOT(ISERROR(REGEXEXTRACT(LOWER(TRANSPOSE(QUERY(TRANSPOSE(B:C),,COLUMNS(B:C)))),JOIN("|",FILTER(LOWER(D:D),D:D<>""))))))))

如果您需要 D:D 中字符串的每项计数(如果它们在其他列中出现任意次数),请尝试以下操作:

=ArrayFormula(QUERY(TRIM(QUERY(SPLIT(FLATTEN(IF(NOT(ISNUMBER(SEARCH(TRANSPOSE(FILTER(D:D,D:D<>"")),LOWER(TRANSPOSE(QUERY(TRANSPOSE(B:C),,COLUMNS(B:C))))))),,TRANSPOSE(FILTER(LOWER(D:D),D:D<>""))&"~"&A:A)),"~"),"Select Col1, SUM(Col2) WHERE Col1 Is Not Null GROUP BY Col1 LABEL SUM(Col2) ''")),"WHERE Col2 Is Not Null"))

【讨论】:

    【解决方案2】:

    如果只需要考虑 2 列,那么采用 JohnSUN 来自 cmets 的建议是有意义的。

    否则:

    =SUMPRODUCT(N(MMULT(N(ISNUMBER(SEARCH(D1,B$1:C$6))),TRANSPOSE(COLUMN(B$1:C$6)^0))>0),A$1:A$6)

    引用的范围 (B$1:C$6) 可以扩展到包含任意多列的范围,但请记住,从 SUMIF 设置切换到 SUMPRODUCT 设置后,您会强烈建议不要使用整个列引用(至少在 Excel 中是这种情况;不确定表格)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-04
      • 1970-01-01
      • 2022-01-10
      • 2019-12-25
      • 2012-11-16
      • 1970-01-01
      相关资源
      最近更新 更多