如何用Excel公式提取指定日期区间内的对应数据?
嘿,我懂你现在的困扰——想从Excel的数据表中提取落在指定日期区间内的对应数据,试了INDEX、MATCH这些函数却没成功对吧?别着急,我给你两个针对性的解决方案,适配不同版本的Excel:
方案1:用FILTER函数(适合Excel 365/2021及以上版本)
这是最省心的方法,直接用FILTER函数筛选符合日期条件的数据:
- 提取B列对应数据:
=FILTER(B5:B11, (A5:A11>=A2)*(A5:A11<=B2)) - 提取C列对应数据:
=FILTER(C5:C11, (A5:A11>=A2)*(A5:A11<=B2)) - 如果想一次性提取日期+B+C列的完整数据:
=FILTER(A5:C11, (A5:A11>=A2)*(A5:A11<=B2))
这个函数会自动返回所有符合日期区间的行,像你示例里起止日期都是29-12-2017的情况,它会精准返回那一行的29-12-2017、50、100三个值。
方案2:旧版Excel用数组公式(INDEX+SMALL+IF)
如果你用的是没有FILTER函数的旧版Excel,就用这个数组公式组合:
先写提取日期列的公式,输入后按Ctrl+Shift+Enter完成数组公式输入,然后下拉填充:=IFERROR(INDEX(A5:A11, SMALL(IF((A5:A11>=A2)*(A5:A11<=B2), ROW(A5:A11)-ROW(A5)+1), ROWS($1:1))), "")
要提取B列或C列的数据,只需要把公式里的A5:A11换成B5:B11或C5:C11就行。
小提醒:
- 一定要确保A2、B2和A5:A11的日期格式完全一致,不然可能会因为格式不匹配导致筛选失败
- 如果没有符合条件的数据,加了
IFERROR的公式会返回空值,避免出现#NUM!错误
内容的提问来源于stack exchange,提问作者yanuswens




