Excel 2010公式修正:匹配ID且晚于参考日期的最早日期与值
问题解决:匹配ID且晚于参考日期的最早值及对应日期
问题分析
原单元格C5的公式:
=IF(MAX(IF(F5:F15=$A5,G5:G15))<$B5,"",SUMIFS(H5:H15,F5:F15,$A5,G5:G15,MIN(IF(F5:F15=$A5,G5:G15))))
核心问题是未筛选晚于或等于B列参考日期的记录,直接取了该ID下所有记录的最早日期,导致返回不符合要求的旧数据(如ID7825返回2005年的0.1,而非2024年7月16日的2)。
解决方案
以下公式基于你提供的数据源范围(F2:F12为ID列,G2:G12为日期列,H2:H12为数值列;A2:A6为目标ID,B2:B6为参考日期),可直接下拉填充。
1. C列:匹配ID且≥参考日期的最早值
适用于Excel 365/2021(动态数组,无需组合键)
=LET( filtered_dates, FILTER(G$2:G$12, (F$2:F$12=A2)*(G$2:G$12>=B2)*(H$2:H$12<>"")), min_date, MIN(filtered_dates), IFERROR(INDEX(H$2:H$12, MATCH(1, (F$2:F$12=A2)*(G$2:G$12=min_date), 0)), "") )
兼容旧版Excel(需按Ctrl+Shift+Enter作为数组公式输入)
=IFERROR(INDEX(H$2:H$12,MATCH(1,(F$2:F$12=A2)*(G$2:G$12=MIN(IF((F$2:F$12=A2)*(G$2:G$12>=B2),G$2:G$12)))*(H$2:H$12<>""),0)),"")
2. D列:对应C列值的最早日期
适用于Excel 365/2021(动态数组)
=LET( filtered_dates, FILTER(G$2:G$12, (F$2:F$12=A2)*(G$2:G$12>=B2)*(H$2:H$12<>"")), IFERROR(MIN(filtered_dates), "") )
兼容旧版Excel(数组公式,按Ctrl+Shift+Enter)
=IFERROR(MIN(IF((F$2:F$12=A2)*(G$2:G$12>=B2)*(H$2:H$12<>""),G$2:G$12)),"")
公式说明
- 先通过
FILTER/IF筛选出同时满足「ID匹配」「日期≥参考日期」「数值非空」的记录 - 用
MIN提取筛选结果中的最早日期 - 借助
INDEX+MATCH定位该最早日期对应的数值 IFERROR处理无符合条件记录的场景,返回空值
测试验证
以ID7825、参考日期7/16/2024为例:
- 筛选后符合条件的日期为7/16/2024、7/17/2024
- 最早日期为7/16/2024,对应数值为2,完全匹配需求
内容的提问来源于stack exchange,提问作者BradS
相关产品推荐
相关产品推荐

