带 Or 的计数
Countifs with Or
我有这样的专栏
+------+-------------------------+-------------------------+
| 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 都包含 "Attended"、"Done" 或 "Ready".
的总行数
预期结果是
+------+-----+
| 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 应用于这种情况。
非常感谢。
您可能会通过使用查询获得您期望的输出,例如
=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)''")
说明
- 我们创建一个(虚拟)数组,包含
- Col A 在 Col 1 中的值并在该虚拟的 Col 2 中重复 table。
- 从正则表达式中 return 得到的布尔值(真和假)匹配 'Attended'、'done' 和 'Ready' 范围内的值 B2:C
- 这给我们留下了一个有 4 列的 table。
- 然后我们围绕它包裹一个 query() ,只有 returns col 3 和 col 4 都有 'true' 的行(意味着有一个肯定的匹配)。在这些行中,我们只 return 第一个列(带有年份),并计算行数(每年)。
希望对您有所帮助?
我有这样的专栏
+------+-------------------------+-------------------------+
| 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 都包含 "Attended"、"Done" 或 "Ready".
的总行数预期结果是
+------+-----+
| 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 应用于这种情况。
非常感谢。
您可能会通过使用查询获得您期望的输出,例如
=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)''")
说明
- 我们创建一个(虚拟)数组,包含
- Col A 在 Col 1 中的值并在该虚拟的 Col 2 中重复 table。
- 从正则表达式中 return 得到的布尔值(真和假)匹配 'Attended'、'done' 和 'Ready' 范围内的值 B2:C
- 这给我们留下了一个有 4 列的 table。
- 然后我们围绕它包裹一个 query() ,只有 returns col 3 和 col 4 都有 'true' 的行(意味着有一个肯定的匹配)。在这些行中,我们只 return 第一个列(带有年份),并计算行数(每年)。
希望对您有所帮助?