能否在多个数组中使用COUNTIF函数?Excel日期计数问题
问题原因与解决方案
问题核心原因
COUNTIF函数的第一参数必须是单元格区域引用,不能直接使用内存数组(比如SEQUENCE生成的动态数组)。你之前成功的公式中,T15#是单元格溢出区域(本质属于单元格引用),所以能正常运行;而当你把第一参数换成SEQUENCE生成的内存数组时,COUNTIF不支持这种参数类型,导致公式失效。
替代解决方案
方案1:SUMPRODUCT + ISNUMBER + MATCH(兼容大多数Excel版本)
用这三个函数组合实现两个日期序列的交集计数,公式如下:
=SUMPRODUCT(--ISNUMBER(MATCH(SEQUENCE(M4-M2+1,1,M2,1),SEQUENCE(H7-G7+1,1,G7,1),0)))
MATCH:检查第一个序列中的每个日期是否存在于第二个序列中,存在则返回位置,不存在返回错误值ISNUMBER:将MATCH的结果转换为布尔值(存在为TRUE,不存在为FALSE)--:将布尔值转换为1或0(TRUE→1,FALSE→0)SUMPRODUCT:对所有1和0求和,得到两个日期序列的交集总次数
方案2:COUNT + FILTER(仅Excel 365/2021及以上版本)
利用动态数组函数的特性,过滤出两个序列的交集后计数:
=COUNT(FILTER(SEQUENCE(M4-M2+1,1,M2,1),ISNUMBER(MATCH(SEQUENCE(M4-M2+1,1,M2,1),SEQUENCE(H7-G7+1,1,G7,1),0))))
FILTER:筛选出第一个序列中存在于第二个序列的日期COUNT:对筛选后的结果计数,得到交集次数
内容的提问来源于stack exchange,提问作者Thiv
相关产品推荐
相关产品推荐

