Excel中日期字段为空时调用另一日期字段进行区间计数的方法
Excel双日期字段区间计数方案(优先取A列,空值取B列)
通用兼容方案(支持所有Excel版本)
直接使用SUMPRODUCT函数实现逐行判断+计数,不需要额外辅助列:
=SUMPRODUCT(--(IF(ISBLANK('TABNAME'!A1:A2000),'TABNAME'!B1:B2000,'TABNAME'!A1:A2000)<=TODAY()-365))
逻辑说明
- 逐行判断A列单元格是否为空,非空取A列日期、为空取B列日期
- 对取出的日期判断是否符合区间条件,返回
TRUE/FALSE逻辑数组 - 通过
--将逻辑值转为1/0数值,SUMPRODUCT求和后即为符合条件的总条数
特殊场景优化
如果存在A、B列同时为空的情况,可以加一层判断排除这类行:
=SUMPRODUCT(--(IF(ISBLANK('TABNAME'!A1:A2000),IF(ISBLANK('TABNAME'!B1:B2000),99999,'TABNAME'!B1:B2000),'TABNAME'!A1:A2000)<=TODAY()-365))
公式中99999为远大于当前日期的Excel日期序列值,确保双空行不会被计入统计。
高版本Excel简化方案(Excel 365/2021及以上)
使用COUNT+FILTER组合,可读性更高:
=COUNT(FILTER('TABNAME'!A1:A2000,IF(ISBLANK('TABNAME'!A1:A2000),'TABNAME'!B1:B2000,'TABNAME'!A1:A2000)<=TODAY()-365))
自定义区间调整
需要统计其他日期区间时,只需修改公式最后的比较规则即可,比如统计过去30天内的数据:
=SUMPRODUCT(--(IF(ISBLANK('TABNAME'!A1:A2000),'TABNAME'!B1:B2000,'TABNAME'!A1:A2000)>=TODAY()-30))
统计2023年全年的数据:
=SUMPRODUCT(--(IF(ISBLANK('TABNAME'!A1:A2000),'TABNAME'!B1:B2000,'TABNAME'!A1:A2000)>=DATE(2023,1,1)),--(IF(ISBLANK('TABNAME'!A1:A2000),'TABNAME'!B1:B2000,'TABNAME'!A1:A2000)<=DATE(2023,12,31)))
内容的提问来源于stack exchange,提问作者WeVie
相关产品推荐
相关产品推荐

