You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用COUNTIFS和SUMPRODUCT统计全列日期范围内的唯一文本数

解决Excel整列统计日期范围内唯一文本数量的问题

你遇到的问题核心是整列引用包含大量空单元格导致的:当用A:AB:B时,COUNTIFS会计算所有空行的匹配数,这些空单元格的COUNTIFS结果会是一个极大的数值(比如几万甚至几十万),除以这么大的数后结果趋近于0,最终SUMPRODUCT的总和就变成了0。另外,整列计算的运算量也会非常大,拖慢Excel运行速度。

下面给你两种实用的解决方案,分别适配不同版本的Excel:

方案1:用动态数组函数(Excel 365/2021及以上推荐)

这个方法最简洁高效,直接用FILTER+UNIQUE+COUNTA组合,自动处理非空数据:

=COUNTA(UNIQUE(FILTER(B:B,(A:A>=E1)*(A:A<E2)*(B:B<>""))))

公式解释:

  1. FILTER(B:B,(A:A>=E1)*(A:A<E2)*(B:B<>"")):筛选出A列在指定日期范围内,且B列不为空的所有项目文本。
  2. UNIQUE(...):从筛选结果中提取唯一的项目值。
  3. COUNTA(...):统计这些唯一值的数量(COUNTA会忽略空单元格,避免统计到无效的空值)。

方案2:兼容旧版Excel(2019及以前)

如果你的Excel不支持动态数组,可以用INDEX+COUNTA定义实际数据范围,替代整列引用,这样既避免空单元格干扰,又减少计算量:

=SUMPRODUCT(
    (($A$1:INDEX($A:$A,COUNTA($A:$A))>=$E1)*($A$1:INDEX($A:$A,COUNTA($A:$A))<$E2))/
    COUNTIFS(
        $B$1:INDEX($B:$B,COUNTA($B:$B)), $B$1:INDEX($B:$B,COUNTA($B:$B)),
        $A$1:INDEX($A:$A,COUNTA($A:$A)), ">="&$E1,
        $A$1:INDEX($A:$A,COUNTA($A:$A)), "<"&$E2
    )
)

公式解释:

  • $A$1:INDEX($A:$A,COUNTA($A:$A)):自动定位到A列最后一个有数据的行,只处理实际存在的数据,不会包含空行。B列同理。
  • 剩下的逻辑和你原来的公式一致,只是把整列替换成了动态的实际数据范围,这样COUNTIFS就不会计算大量空单元格,结果就能正常返回。

额外注意事项

  • 确保A列的日期是真正的日期格式,如果是文本格式,日期比较会失效,可以用DATEVALUE函数转换后再比较。
  • 如果B列存在看似空的单元格(比如输入了空格或空文本""),要在条件里加上(B:B<>"")排除这类无效值,避免统计错误。

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

火山引擎 最新活动