Excel FILTER函数日期范围筛选异常:如何筛选近6个月日期?
问题分析与解决方案
第一个公式失效原因
FILTER函数的条件参数需要逐行对应的数组布尔值,但AND()函数会将整个条件区域的结果合并为单个TRUE/FALSE,无法实现逐行判断,导致公式返回NONE。
第二个公式返回全部日期原因
当MONTH(TODAY())-6(或你使用的-2)得到负数时,DATE()函数会自动向前推算年份,但如果推算后的日期早于MASTER中所有的End Date,就会返回全部日期;另外也可能是MASTER中的日期格式为文本,导致比较逻辑失效。
正确公式
基础修正版(日期为标准日期格式)
将AND()替换为数组逻辑与运算符*,实现逐行判断:
=FILTER(MASTER[End Date], (MASTER[End Date]>=EDATE(TODAY(),-6)) * (MASTER[End Date]<=TODAY()), "NONE")
兼容文本日期版
如果MASTER中的End Date是文本格式,先通过DATEVALUE()转换为标准日期:
=FILTER(MASTER[End Date], (DATEVALUE(MASTER[End Date])>=EDATE(TODAY(),-6)) * (DATEVALUE(MASTER[End Date])<=TODAY()), "NONE")
额外验证步骤
- 检查MASTER的
End Date列是否为标准日期:用=ISDATE(MASTER[End Date])测试,返回TRUE则为有效日期,FALSE则需转换格式。 - 手动计算
EDATE(TODAY(),-6)的结果,确认MASTER中存在处于该日期与TODAY()之间的记录。
内容的提问来源于stack exchange,提问作者JH K
相关产品推荐
相关产品推荐

