忘记密码
回答者
回答于 2026-10-23
在Excel中根据物料名称匹配最新日期对应的单价,可通过以下几种方法实现。假设A列为物料名称,B列为日期,C列为单价,目标物料名称写在E2单元格。
方法一:LOOKUP函数(兼容性好)
公式:=LOOKUP(1,0/((A:A=E2)*(B:B=MAXIFS(B:B,A:A,E2))),C:C)
原理:MAXIFS先求出该物料的最大日期,再通过多条件构造0和错误值的数组,利用LOOKUP(1,0/...)的经典用法返回最后匹配的单价。
方法二:INDEX + MATCH数组公式
公式:=INDEX(C:C,MATCH(1,(A:A=E2)*(B:B=MAXIFS(B:B,A:A,E2)),0))
注意:在Excel 2019及更早版本中,输入后需按Ctrl+Shift+Enter确认为数组公式;Microsoft 365中直接回车即可。
方法三:XLOOKUP函数(适用于Microsoft 365或Excel 2021及以上)
公式:=XLOOKUP(1,(A:A=E2)*(B:B=MAXIFS(B:B,A:A,E2)),C:C)
XLOOKUP原生支持数组运算,语法更简洁。
适用条件与注意事项
- 数据规范:B列的日期必须为Excel可识别的标准日期格式,而非文本型日期,否则
MAXIFS无法正确比较大小。 - 重复记录处理:若同一物料在同一天存在多条单价记录,上述公式均默认返回第一条匹配到的单价。
- 性能优化:实际应用中建议将整列引用(如A:A)替换为具体数据范围(如A2:A1000),避免全列计算导致表格卡顿。
常见误区
- 误用VLOOKUP:VLOOKUP默认只能按首个匹配项查找,无法直接实现“先找最大日期再取单价”的多步逻辑。
- 忽略日期格式:文本格式的日期会导致MAXIFS失效,返回错误结果。