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

如何基于每行Low&High范围动态统计KeyNums列中KeyNms的出现次数?

我来帮你搞定这个Excel动态统计的需求!

首先明确你的核心需求:对每一行数据,以当前行的Low和High作为数值范围,统计KeyNums列里和当前行KeyNms相同、且数值落在该范围内的记录条数。你提到的CASE1用硬编码能得到正确结果,但没法适配每行的动态值;CASE2全返回TRUE,应该是公式里的引用或条件写法出了问题。

下面给你两种实用的解决方案,覆盖不同Excel版本:

方法一:用SUMPRODUCT(兼容所有Excel版本)

SUMPRODUCT可以直接处理数组运算,不用按Ctrl+Shift+Enter(旧版数组公式的繁琐操作)。假设你的数据列对应:

  • KeyNms:A列
  • KeyNums:B列
  • Low:C列
  • High:D列
  • 统计结果放E列

在E2单元格输入公式:

=SUMPRODUCT((B:B>=C2)*(B:B<=D2)*(A:A=A2))

然后下拉填充到所有行就行。

公式解释:

  • (B:B>=C2):判断KeyNums列每个值是否≥当前行的Low,返回TRUE/FALSE(运算时自动转成1/0)
  • (B:B<=D2):判断是否≤当前行的High
  • (A:A=A2):判断KeyNms列每个值是否和当前行的KeyNms一致
  • SUMPRODUCT会把这三个数组对应位置相乘,再求和,最终得到同时满足三个条件的记录总数

方法二:用COUNTIFS(Excel 2007及以后版本)

COUNTIFS是专门的多条件计数函数,写法更直观:

=COUNTIFS(A:A,A2,B:B,">="&C2,B:B,"<="&D2)

同样下拉填充即可。

公式解释:

  • A:A,A2:第一个条件,KeyNms列等于当前行的KeyNms
  • B:B,">="&C2:第二个条件,KeyNums列≥当前行的Low(注意要把运算符和单元格用&连接,不能直接写">=C2")
  • B:B,"<="&D2:第三个条件,KeyNums列≤当前行的High

为什么你的CASE2会失败?

大概率是这两个问题:

  1. 错误地用了绝对引用(比如$C$2),导致所有行都引用第一行的Low/High值
  2. 运算符和单元格的连接错误,比如直接写">=C2"(把C2当成文本了),这种写法会让所有数值都满足条件,最终返回TRUE,统计了全部行数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:12:16