Excel跨表匹配日期范围账单及跨月公式报错问题咨询
问题根源
原有公式仅提取了周区间起止日期的「日」维度做判断,跨月场景下(如12月30日到1月5日)会出现DAY(st)=30、DAY(fn)=5的情况,此时d>=30 且 d<=5是永假条件,FILTER返回空数组触发报错。
适配跨月场景的修正公式
=LET( st, H1, fn, I1, expenses, $D$3:$F$10, na, INDEX(expenses, SEQUENCE(ROWS(expenses)), {1,2}), d, INDEX(expenses,,3), same_month, MONTH(st)=MONTH(fn), filter_cond, IF(same_month, (d>=DAY(st))*(d<=DAY(fn)), (d>=DAY(st))+(d<=DAY(fn))), FILTER(na, filter_cond, {"无匹配账单",0}) )
公式修改说明
- 新增
same_month变量判断周区间是否落在同一个自然月内 - 跨月场景下逻辑从「日期间的且判断」改为「日期间的或判断」:即还款日大于等于区间起始日的日序,或者小于等于区间结束日的日序,即可命中
- 给FILTER函数增加第三个兜底参数,匹配结果为空时返回预设值,彻底避免空数组报错
前置配置要求
请先将Static表中「每月还款日」字段统一转换为代表当月第几日的整数格式,避免字符串格式带来的数值判断错误。
内容的提问来源于stack exchange,提问作者Andrew Nunez
相关产品推荐
相关产品推荐

