匹配多行编号并核查对应日期是否在90天范围内
Excel多条件匹配统计解决方案
需求明确
判断A2单元格的编号是否在D列存在匹配项,同时需满足:
- A2对应的B列日期 ≥ 匹配项对应的E列日期
- B列日期与E列日期间隔小于91天(即90天范围内)
满足以上所有条件则计入统计,否则不计入。
此前尝试的VLOOKUP仅能返回首个匹配值,无法核查所有可能的匹配项;INDEX+MATCH组合也无法实现多行匹配的多条件核查。
可行公式方案
方案1:兼容全版本Excel(SUMPRODUCT函数)
使用数组运算实现多条件统计,公式如下:
=IF(SUMPRODUCT(--(D:D=A2),--(B2>=E:E),--(B2-E:E<91))>0,"计入","不计入")
公式拆解:
--(D:D=A2):将D列与A2编号匹配的单元格转换为1(匹配)或0(不匹配)--(B2>=E:E):判断B2日期是否大于等于对应E列日期,转换为1或0--(B2-E:E<91):判断两日期间隔是否小于91天,转换为1或0SUMPRODUCT将三个数组相乘后求和,结果大于0则说明存在符合条件的匹配项,返回"计入",否则返回"不计入"
方案2:Excel 365/2021专属(XLOOKUP函数)
利用动态数组特性直接查找符合条件的项,公式如下:
=IF(NOT(ISERROR(XLOOKUP(1,(D:D=A2)*(B2>=E:E)*(B2-E:E<91),E:E))),"计入","不计入")
公式拆解:
(D:D=A2)*(B2>=E:E)*(B2-E:E<91):生成由0和1组成的数组,1代表同时满足三个条件的行XLOOKUP查找数组中第一个1对应的E列值,找不到则返回错误NOT(ISERROR(...))判断是否存在符合条件的匹配项,进而返回"计入"或"不计入"
示例验证
- 示例1:编号24902、日期12/20/22,D列匹配3行但B2日期均早于E列日期,SUMPRODUCT求和为0,返回不计入
- 示例2:编号24902、日期3/11/23,D列存在1行满足所有条件,SUMPRODUCT求和大于0,返回计入
内容的提问来源于stack exchange,提问作者Derek Dickson
相关产品推荐
相关产品推荐

