You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用VLOOKUP结合近似日期范围与编码条件查询对应类别?

用VLOOKUP实现双条件(Code+日期范围)匹配查询

原始数据

CodeBeg. dateEnd dateClass
5401/03/202110/10/2020166
5411/10/202131/12/9999322
10210/04/202031/08/2021180
10201/09/202130/06/2022190
10201/07/202231/12/9999200

查询需求

匹配条件:Code=102,日期区间01/05/2021 - 31/05/2021,预期结果为190(对应第4行记录的区间)。

方法1:数组公式版VLOOKUP(Excel 2019+/365)

假设查询的Code存于单元格G1,查询日期(取区间内任意日期即可,这里用01/05/2021存于G2),使用以下公式:

=VLOOKUP(1,IF(A:A=G1,--(B:B<=G2)),4,TRUE)
  • 非Excel 365/2021版本输入后需按Ctrl+Shift+Enter触发数组运算,365/2021版本直接回车即可。
  • 逻辑:IF(A:A=G1,--(B:B<=G2))先筛选出同Code的行,将符合Beg. date<=查询日期的行标记为1,其余为FALSE;VLOOKUP近似查找最接近1的项,返回对应第4列的Class值。

方法2:辅助列实现双条件匹配

如果不想用数组公式,新增辅助列(如E列),在E2单元格输入:

=A2&"|"&TEXT(B2,"yyyy-mm-dd")

下拉填充所有行,将Code和标准化后的Beg. date拼接为唯一匹配键。

查询公式(G1为目标Code,G2为查询日期):

=VLOOKUP(G1&"|"&TEXT(G2,"yyyy-mm-dd"),E:D,3,TRUE)
  • 逻辑:将查询条件按相同规则拼接,通过VLOOKUP近似匹配找到小于等于拼接值的最大项,对应返回Class。

关键注意事项

  • 必须保证同一Code下的Beg. date是升序排列,否则近似匹配会返回错误结果。
  • 日期格式需统一,避免因格式差异导致拼接或比较失效。

内容的提问来源于stack exchange,提问作者José Durand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 08:55:15