# 怎么用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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。