Excel表格vlookup函式合併單元格查詢
雖然一再強調原始資料不要合併單元格,但是實際應用中這種操作總是在所難免。
有關合並單元格的問題,之前講過:
今天又有同學提出了新問題,合併單元格如何用 vlookup 查詢?
來看示例。
案例 1:
根據 A 列的“姓名”,查詢 H:I 列中對應的“底薪”,填入 C 列
案例 2:
根據 K:L 列的“姓名”和“月份”,查詢 D 列中對應的“獎金”,填入 M 列
案例 1 解決方案:
1. 先來試一下最基礎的 vlookup 公式,然後下拉,發現不行,每個人都只有“一月”的資料,其他月都查不到
2. 這是為什麼呢?我們在 E 列加個公式 =A2 就清楚了:
- 因為合併單元格的值實際是寫在合併區域的第一個單元格中
- 其他單元格的值都為 0
- 所以 2、3、4 月查不到,因為它們對應的姓名為 0
3. 利用合併單元格的這個特性,我們在 F 列增加一個輔助列,輸入以下公式,下拉,這樣所有 0 值都等於它上方最近的非 0 值:
=IF(A2=0,F1,A2)
4. 現在,我們只要在 C 列的公式中,將 vlookup 的第一個引數 A2 替換成 F2 就可以了
案例 2 解決方案:
1. 案例 2 需要根據左側表格的“姓名”和“月份”,查詢對應的獎金,多條件查詢雖然 vlookup 也能實現,但我更推薦 index match 函式:
- 在 M2 單元格中輸入以下公式,按 Ctrl Shift Enter 鍵使陣列函式生效:=INDEX($D$2:$D$13,MATCH(K2&L2,$A$2:$A$13&$B$2:$B$13,0))
- $D$2:$D$13:表示需要查詢的值區域
- MATCH(K2&L2,$A$2:$A$13&$B$2:$B$13,0):表示 K2 和 L2 分別與 $A$2:$A$13 和 $B$2:$B$13 的值絕對匹配
- 關於 index match 陣列函式的詳細解釋,請參見 Excel 如何查詢 3 個以上條件?
2. 然而,我們發現只有“李四”“一月”的獎金找到了,其他都找不到。為什麼呢?跟案例 1 的原因一樣,合併單元格惹的禍,忘記的同學再看一眼 E 列就想起原因了
3. 既然知道了原因,我們就利用現成的輔助列,把 M 的公式中 $A$2:$A$13 改成 $F$2:$F$13 就可以了,別忘了按 Ctrl Shift Enter 鍵: