在 Excel 中,VLOOKUP 函数默认是从上到下(前向后)查找,但有时我们需要从后往前查找(如查找最后一个匹配项)。以下是几种实现方法:
方法 1:使用 INDEX + MATCH 组合(推荐)
=INDEX(结果列, MATCH(2, 1/(条件列=查找值), 1))
公式说明:
-
条件列=查找值
:创建布尔数组(TRUE/FALSE) -
1/(条件列=查找值)
:将 TRUE 转为 1,FALSE 转为错误值 -
MATCH(2, ... ,1)
:查找大于等于 2 的值(总是返回最后一个匹配位置) -
INDEX
:返回对应位置的值
=INDEX(C2:C10, MATCH(2, 1/(A2:A10="苹果"), 1))
方法 2:使用 LOOKUP 函数
=LOOKUP(2, 1/(条件列=查找值), 结果列)
公式说明:
-
同样利用
1/(条件列=查找值)
创建数组 -
LOOKUP 默认会返回最后一个匹配项
=LOOKUP(2, 1/(A2:A10="苹果"), C2:C10)
方法 3:使用 XLOOKUP(Excel 365 或 2021+)
=XLOOKUP(查找值, 条件列, 结果列, , , -1)
参数说明:
-
最后一个参数
-1
表示从后向前搜索 -
最简洁的解决方案(推荐新版 Excel 用户使用)
示例:
=XLOOKUP("苹果", A2:A10, C2:C10, , , -1)
方法 4:使用辅助列 + VLOOKUP
-
添加辅助列(假设在 D 列):
=ROW()/COUNTIF($A$2:A2, A2)
-
使用 VLOOKUP:
=VLOOKUP(MAX(IF(A2:A10="苹果", D2:D10)), D2:E10, 2, FALSE)
示例场景
假设数据如下:
A列(产品) | B列(日期) | C列(销量) |
---|---|---|
苹果 | 2023-01-01 | 100 |
香蕉 | 2023-01-02 | 200 |
苹果 | 2023-01-03 | 150 |
苹果 | 2023-01-05 | 180 |
查找最后一个"苹果"的销量:
=INDEX(C2:C5, MATCH(2, 1/(A2:A5="苹果"), 1))
结果将返回 180
(最后一个苹果的销量)
注意事项
-
所有方法都是数组公式,输入后需按
Ctrl+Shift+Enter
(Excel 365 除外) -
确保区域大小一致
-
方法1和2在找不到匹配项时返回 #N/A
-
处理大型数据集时,INDEX+MATCH 比数组公式更高效
这些方法都绕过了 VLOOKUP 的前向搜索限制,实现了从后往前的查找功能。根据你的 Excel 版本和个人偏好,选择最适合的方法即可。