【问题标题】:COUNTIFS column A or B as rangeCOUNTIFS 列 A 或 B 作为范围
【发布时间】:2021-03-24 19:51:44
【问题描述】:

我正在努力解决这里的逻辑。条件为 OR 条件的 COUNTIFS 相当简单:

=SUM(COUNTIFS(range,criteria range1,{criteria1,criteria1.1},criteria range2,criteria2))

虽然..如果我需要在范围本身上有一个 OR 条件怎么办?

我有两列包含“尝试 1”和“尝试 2”的周数,然后是状态,所以我的公式如下所示:

=SUM(COUNTIFS(raw[week1],refToWeekNumberCell,raw[status],{"Success","Try again","Fail","Invalid"}))

..所以我想计算在任何一周我有多少“无效”或“有效”(所有其他状态)。如果状态为“无效”,则只会进行一次尝试。因此,检查“第 1 周”列就足够了。但是,如果我想检查“有效尝试”的次数,我需要同时检查“Week1”和“Week2”列。这可以通过某种方式完成吗?我是否需要一个帮助列,如果需要,我该如何制定?

样本数据:

原始表:

Week1 Week2 Status
7 7 Success
7 - Success
7 - Invalid
7 8 Success
7 8 Success
8 8 Success

表格在预览中看起来不错,但在发布时却不好看,所以:

预期结果:第 8 周计数在“第 1 周”或“第 2 周”列中均无效。由于 Invalid 始终只有“第 1 周”下的任何内容,因此这很容易。但是在第 5 行,逻辑失败,因为我只能使用一列作为范围..

【问题讨论】:

  • 请发布一些示例数据和预期输出。你用的是哪个版本的excel?
  • @Harun24HR 完成。我正在使用 O365, v. 2101 for Enterprise。嗯..张贴时桌子坏了..但在预览中看起来不错..
  • 那么第 8 周的计数是 4 还是 3?
  • @JvdV 3 将是理想的结果。

标签: excel excel-formula


【解决方案1】:

如果它没有比两列复杂得多,您可以使用:

=SUM(IF((A2:A7=8)+(B2:B7=8)>=1,1,0)*(C2:C7<>"Invalid"))

“+”通常用于在此类布尔结构中充当某种“或”验证。但是,如果您有更多列,MMULT() 变体更容易维护。

=SUM(--(MMULT((A2:B7=8)*(C2:C7<>"Invalid"),{1,1})>0))

【讨论】:

  • 太棒了!非常感谢(:
【解决方案2】:

当你使用Excel365 然后尝试-

=COUNTA(FILTER(C2:C7,MMULT((A2:B7=8)*(C2:C7<>"Invalid"),SEQUENCE(COLUMNS(A2:B2)))))

【讨论】:

  • 正在写一个MMULT() 的答案。这是我的尝试:=SUM(--(MMULT((A2:B7=8)*(C2:C7&lt;&gt;"Invalid"),{1,1})&gt;0))
  • {1,1} 中的逗号换成分号(我认为这适用于非英文版本)。
  • @Harun24HR 这似乎可行,但是每当所有周行都为空时,我最终都会返回 1.. 我得到了这个子线程中建议的 JvdV 工作
  • @JvdV 你能把这个作为解决方案发布,以便我可以将它标记为已解决吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-18
  • 1970-01-01
  • 1970-01-01
  • 2011-02-03
  • 2020-06-21
  • 1970-01-01
相关资源
最近更新 更多