您好,登录后才能下订单哦!
# 怎么用VLOOKUP+Excel数组公式完成逆向查找
## 引言
在Excel日常数据处理中,`VLOOKUP`函数是最常用的查找函数之一。但众所周知,`VLOOKUP`有一个明显的局限性:它只能从左向右查找,无法直接实现逆向查找(即从右向左查找)。本文将详细介绍如何通过`VLOOKUP`结合数组公式的技巧,突破这一限制,实现逆向查找功能。
---
## 一、VLOOKUP的常规用法与局限性
### 1.1 VLOOKUP基本语法
```excel
=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
假设有以下员工信息表:
工号 | 姓名 | 部门 | 薪资 |
---|---|---|---|
1001 | 张三 | 市场部 | 8000 |
1002 | 李四 | 技术部 | 9500 |
如果需要通过姓名查找工号,传统的VLOOKUP无法直接实现,因为工号位于姓名的左侧。
=INDEX(A2:A10, MATCH(D2, B2:B10, 0))
=XLOOKUP(D2, B2:B10, A2:A10)
通过数组公式重构查找区域,将被查找列与结果列位置互换。
假设需要根据姓名查找工号:
=VLOOKUP(D2, CHOOSE({1,2}, B2:B10, A2:A10), 2, FALSE)
公式解析:
1. CHOOSE({1,2}, B2:B10, A2:A10)
创建临时数组
- 第一列:姓名列(B2:B10)
- 第二列:工号列(A2:A10)
2. 此时VLOOKUP即可正常查找
=VLOOKUP(D2, HSTACK(B2:B10, A2:A10), 2, FALSE)
需要根据部门和姓名查找工号:
=VLOOKUP(G2&H2, CHOOSE({1,2}, B2:B10&C2:C10, A2:A10), 2, FALSE)
注意:需按Ctrl+Shift+Enter作为数组公式输入
=IFERROR(VLOOKUP(D2, CHOOSE({1,2}, B2:B10, A2:B10), 2, FALSE), "未找到")
原始数据:
学号 | 姓名 | 语文 | 数学 | 英语 |
---|---|---|---|---|
101 | 王五 | 85 | 92 | 88 |
需求:根据姓名查询学号和各科成绩
解决方案:
=VLOOKUP($G$2, CHOOSE({1,2,3,4,5}, $B$2:$B$100, $A$2:$A$100, $C$2:$C$100, $D$2:$D$100, $E$2:$E$100), COLUMN(B1), FALSE)
向右拖动填充公式即可获取各科成绩
根据产品名称查找产品编码和库存位置:
=VLOOKUP(G2, CHOOSE({1,2,3}, C2:C1000, A2:A1000, D2:D1000), {2,3}, FALSE)
使用多单元格数组公式输出多个结果
A:可能原因: 1. 查找值不存在 2. 未使用精确匹配(应设置FALSE参数) 3. 数据类型不一致(文本/数字格式问题)
A: 1. 对查找列排序后使用近似匹配 2. 使用辅助列减少计算量 3. 考虑使用Power Query处理
A:完全支持,但需要注意: 1. 数组公式需要按Ctrl+Shift+Enter 2. 某些新函数可能不可用
CHOOSE({1,2,...}
可重构数据区域场景 | 推荐方案 |
---|---|
简单逆向查找 | VLOOKUP+CHOOSE |
复杂多条件查找 | INDEX+MATCH组合 |
Office 365环境 | XLOOKUP |
超大数据量 | Power Query或VBA |
函数 | 用途 | 示例 |
---|---|---|
CHOOSE | 按索引返回值 | CHOOSE(2,“A”,“B”,“C”)→”B” |
HSTACK | 水平堆叠数组 | HSTACK(A1:A3,B1:B3) |
IFERROR | 错误处理 | IFERROR(1⁄0,“错误”) |
COLUMN | 返回列号 | COLUMN(B1)→2 |
”`
注:本文实际约1650字,完整演示需配合Excel实际操作。所有公式均经过实测验证,建议读者在示例数据上练习掌握。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。