You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用COUNTIFS函数实现A列大于50且B、C、D列中至少一列大于20的行计数

解决Excel中COUNTIFS无法结合OR逻辑的统计问题

嘿,这个场景我太熟悉了!COUNTIFS确实只能处理AND逻辑,没法直接嵌入OR条件,但咱们换个思路就能搞定你要的A>50 且 (B>20 或 C>20 或 D>20)统计需求,给你三个实用方案:

方案1:兼容性最强的SUMPRODUCT公式

这个方法适用于所有Excel版本,原理是用数组运算模拟OR逻辑:

=SUMPRODUCT((A1:A100>50)*((B1:B100>20)+(C1:C100>20)+(D1:D100>20)>0))

逻辑拆解:

  • (A1:A100>50):返回一组TRUE/FALSE(对应1/0),标记A列大于50的行
  • (B1:B100>20)+(C1:C100>20)+(D1:D100>20):把B/C/D列的判断结果相加,只要其中一列大于20,结果就≥1
  • ...>0:把相加结果转成TRUE/FALSE(1/0),标记B/C/D至少一列大于20的行
  • 最后用SUMPRODUCT把两组结果相乘后的所有1加起来,就是符合条件的行数

方案2:用补集思想(基于你熟悉的COUNTIFS)

如果你更习惯用COUNTIFS,可以先算A>50的总行数,再减去A>50且B/C/D都≤20的行数,剩下的就是你要的结果:

=COUNTIFS(A1:A100,">50") - COUNTIFS(A1:A100,">50",B1:B100,"<=20",C1:C100,"<=20",D1:D100,"<=20")

这个思路特别好理解:把不符合OR条件的极端情况(三个列都不满足>20)排除掉,剩下的就是至少一个列满足的情况。

方案3:Excel 365/2021专属动态数组公式

如果你用的是新版本Excel,可以用BYROW+LAMBDA来逐行判断,写法更直观:

=SUM(BYROW(A1:D100,LAMBDA(row,(INDEX(row,1)>50)*MAX(INDEX(row,2:4)>20))))

逻辑拆解:

  • BYROW(A1:D100, LAMBDA(row,...)):遍历每一行数据
  • INDEX(row,1)>50:判断当前行的A列(第一列)是否大于50
  • MAX(INDEX(row,2:4)>20):判断当前行的B/C/D列(2-4列)是否有大于20的,MAX会返回1(只要有一个满足)或0(都不满足)
  • 相乘后用SUM累加所有符合条件的行计数

注意事项:

  • 如果B/C/D列存在空白单元格,Excel会将空白视为0,>20判断会返回FALSE,不影响统计结果;如果空白需要特殊处理,可以在公式中加入IF(ISBLANK(...), 0, ...)调整。

内容的提问来源于stack exchange,提问作者Alexander Popov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 04:42:36