按邮政编码与日期范围匹配两表获取对应风速的Excel技术问题

解决方案
以下公式均写在Wind Claims表的空白新列第2行,完成后下拉即可批量匹配所有行的风速。
适用Excel 365/2021及以上版本
使用FILTER函数直接多条件筛选,逻辑清晰易调整:
// 仅返回匹配到的第一个风速值,无匹配返回空 =FILTER('PLRB Wind'!$M$2:$M$78525, ('PLRB Wind'!$I$2:$I$78525=Z2)*('PLRB Wind'!$D$2:$D$78525>=B2)*('PLRB Wind'!$D$2:$D$78525<=C2), "") // 若同一周期匹配到多条风速,返回最大风速,无匹配返回0 =MAX(FILTER('PLRB Wind'!$M$2:$M$78525, ('PLRB Wind'!$I$2:$I$78525=Z2)*('PLRB Wind'!$D$2:$D$78525>=B2)*('PLRB Wind'!$D$2:$D$78525<=C2), 0))
适用Excel 2019及更早版本
使用INDEX+MATCH数组公式,输入完成后需要按Ctrl+Shift+Enter组合键确认生效:
=IFERROR(INDEX('PLRB Wind'!$M$2:$M$78525, MATCH(1, ('PLRB Wind'!$I$2:$I$78525=Z2)*('PLRB Wind'!$D$2:$D$78525>=B2)*('PLRB Wind'!$D$2:$D$78525<=C2), 0)), "")
原公式问题说明
- 第一个XLOOKUP公式采用邮编+日期拼接做精确匹配,仅能匹配到PLRB Wind表日期和Wind Claims表某行起止日期完全一致的记录,未覆盖日期区间内的所有情况,因此匹配率极低
- 第二个MATCH公式逻辑倒置:将PLRB Wind表单行的日期、邮编去匹配整个Wind Claims表的全量记录,不符合「Wind Claims每行找对应PLRB符合条件记录」的需求,因此无法返回正确结果
注意事项
- 提前校验两个表的日期字段均为标准日期格式而非文本格式,可通过公式
=ISNUMBER(日期单元格)验证,返回TRUE即为标准日期 - 若同一报损周期、同一邮编对应多条PLRB Wind风速记录,可根据业务需求调整返回逻辑:需要最大风速可套MAX函数,需要平均风速套AVERAGE函数,需要第一条匹配值直接使用基础公式即可
- PLRB Wind表的引用范围需添加绝对引用符号
$,避免公式下拉时查询范围偏移
内容的提问来源于stack exchange,提问作者JBeets
相关产品推荐
相关产品推荐

