与Orntifaments

时间:2015-10-08 18:47:34

标签: google-sheets countif

我有这样的专栏

+------+-------------------------+-------------------------+
| Year |         Status1         |         Status2         |
+------+-------------------------+-------------------------+
|    1 | [Blank]                 | Confirmed on YYYY.MM.DD |
|    2 | Confirmed on YYYY.MM.DD | done on YYYY.MM.DD      |
|    1 | Confirmed on YYYY.MM.DD | Confirmed on YYYY.MM.DD |
|    2 | Attended on YYYY.MM.DD  | Confirmed on YYYY.MM.DD |
|    1 | Attended on YYYY.MM.DD  | done on YYYY.MM.DD      |
|    1 | done on YYYY.MM.DD      | done on YYYY.MM.DD      |
|    2 | done on YYYY.MM.DD      | done on YYYY.MM.DD      |
|    1 | Ready on YYYY.MM.DD     | Confirmed on YYYY.MM.DD |
|    2 | Ready on YYYY.MM.DD     | Confirmed on YYYY.MM.DD |
+------+-------------------------+-------------------------+

我需要计算Status1和Status2包含的总行数"参加","完成"或"准备好"。

预期结果

+------+-----+
| Year | Sum |
+------+-----+
|    1 |   2 |
|    2 |   1 |
+------+-----+

我尝试了COUNTIFS,因为没有OR运算符,如果我暴力,那么公式计算1年级的总和就变成

 =
countifs(A:A, "=1",B:B, "=*attended*", C:C, "=*attended*")+
countifs(A:A, "=1",B:B, "=*attended*", C:C, "=*done*")+
countifs(A:A, "=1",B:B, "=*attended*", C:C, "=*ready*")+
countifs(A:A, "=1",B:B, "=*done*", C:C, "=*attended*")+
..........

将会有9个案例,如果以后我还有另一个新案例,那么公式将会非常长。 因此,我的问题是否有任何简单的解决方案?

我读了这个帖子 Google Spreadsheets: How do I combine COUNTIF with OR但我不确定如何在这种情况下应用DCOUNT或COUNTIFS。

非常感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用查询获得预期的输出,例如

=query(ArrayFormula({A2:A,A2:A,regexmatch(B2:C, "Attended|done|Ready")} ), "select Col1, Count(Col2) where Col3 = true and Col4 = true group by Col1 label Count(Col2)''")

Example sheet

说明

  1. 我们创建一个由(包含)组成的虚拟数组
    • Col 1中Col A的值,并在此虚拟​​表的Col 2中重复。
    • 从正则表达式返回的布尔值(真和假),用于值'参加','完成'和'准​​备好'在范围B2:C
    • 这给我们留下了一个包含4列的表格。
  2. 然后我们在它周围包装一个查询(),它只返回col 3和col 4都有' true' (意思是积极匹配)。在这些行中,我们只返回第一个col(带有年份),并计算行数(每年)。
  3. 希望有帮助吗?