Google 按多个条件计算的工作表

Google Sheets counting with multiple criteria

我有一个 Google Sheet ,其中有几列数据,我想计算有多少行符合两个条件,其中一个条件与其中一个条件匹配两个值。

这是我拥有的数据示例:

我想做的是这样的事情:计算 A 列中有多少行“是”,B 列中有多少行是“A”或“C”。或者有多少行是“否”以及“I”或“X”。

我想到了这个:

=COUNTIFS($A1:$A21,"Yes",B1:B21,"="&"A")+COUNTIFS($A1:$A21,"Yes",B1:B21,"="&"C")

…但这感觉很笨拙,如果我决定移动列,更新起来会更难。更不用说如果我想将多位信息组合到一个单元格中真的很糟糕,例如:

=(COUNTIFS($A1:$A21,"Yes",B1:B21,"="&"A")+COUNTIFS($A1:$A21,"Yes",B1:B21,"="&"C")) & "/" & (COUNTIFS($A1:$A21,"No",B1:B21,"="&"A")+COUNTIFS($A1:$A21,"No",B1:B21,"="&"C"))

我的意思是,那太糟糕了。它有效,但很糟糕。

我试过使用 OR() 没有成功,也试过 curly-bracket 语法没有成功。我完全承认我可能做错了他们两个,但如果是这样,该死的,如果我能弄清楚我错过了什么。任何 Sheet 专家愿意同情一个老家伙并告诉我一个更聪明的方法来做到这一点?

I'm not sure if this is exactly what you're looking for,但您可以通过创建一个 "pairings" 列表来稍微简化它。

E2: =COUNTIFS(A:A,$C2,B:B,$D2)

E3: =COUNTIFS(A:A,$C3,B:B,$D3)

...

E6: =SUM(E2:E5)

好处是它很灵活 - 您以后可以根据需要添加任意数量的配对。此外,没有数组公式的复杂性。

简化:

  • 创建一个列 C,如果 B 是 A 或 C,则该列为 TRUE,否则为 FALSE。

    创建一个列 D,如果 B 是 I 或 X,则该列为 TRUE,否则为 FALSE。

    如果 A 为 "yes" 并且 C 为 TRUE,则创建一个为 TRUE 的列 E。

    如果 A 为 "no" 并且 D 为 TRUE

    ,则创建一个为 TRUE 的列 F

    创建一个 G 列,即 E 列或 F 列。

    对 G 列中的值求和。

对于复杂的逻辑,使用更强大的命令,如 query or filter

count the rows with “Yes” in column A, and either “A” or “C” in column B.

变成

=query(A:C, "select count(A) where A='Yes' and (B='A' or B='C')")

=query(A:C, "select count(A) where A='Yes' and (B='A' or B='C') label count(A) ''")

如果您不想要 header 列,例如 "count"。

这几乎是用英语陈述目标(好吧,它的 SQL 版本)。

我会使用带有变量的查询。在 F1 中输入:

=query(A:B,"select count(A) where A ='"&C2&"' AND B='"&D2&"' OR A ='"&C2&"' AND B='"&E2&"'")

在 C2 中输入 "Yes" 或 "No",在 D2 和 E2 中输入 B 字母(或留空)。在 C1、D1 和 E1 中输入任何 headers。

到目前为止最短的一个:

=SUMPRODUCT(REGEXMATCH(A1:A8&B1:B8,"(?i)Yes(A|C)"))

使用 & 连接两列并在结果上使用 REGEX

  • (?i) 不区分大小写
  • yes(A|C) 是后跟 A 或 C
  • SUM 全部为真。

对于复杂的条件,

=ARRAYFORMULA(SUM(--REGEXMATCH(A1:A8&B1:B8,"(?i)yes(A|C)"))&"/"&SUM(--REGEXMATCH(A1:A8&B1:B8,"(?i)no(I|X)")))

请注意,yes/No 后不应有尾随空格,AC 等前不应有前导空格。如果有,请使用 TRIM.