重建原書 Figure 7-29~7-33 的 region abbreviation mapping,比較 VLOOKUP 與 XLOOKUP 的 robustness。
原書要把 region names 映射成 abbreviations,例如 North East → N/E。VLOOKUP 從 mapping table F:G 取回 abbreviation;XLOOKUP 則直接指定 lookup array 與 return array。
| 方法 | 原書公式 | 原書結果 |
|---|---|---|
| VLOOKUP | =VLOOKUP(B2,$F$2:$G$5,2,0) |
N/E |
| XLOOKUP | =XLOOKUP(B2,$F$2:$F$5,$G$2:$G$5,"n/a") |
N/E |
| Mapping update | N/E → NE | Linked report 自動更新為 NE |
VLOOKUP 要求 unique lookup field 位於 table 最左欄,exact match 應使用最後參數 0/FALSE。XLOOKUP 分別指定 lookup array 與 return array,不依賴 hard-coded column index number。
| 結構變更 | VLOOKUP | XLOOKUP |
|---|---|---|
| 在 F 與 G 之間插入新欄 | 原本 column index 2 可能指到錯欄/公式失效 |
Separate arrays 會隨引用調整,原書示例不會因此 break |
| Mapping N/E 改成 NE | Linked output 更新 | Linked output 更新 |
Lookup function 的選擇不只看「現在算得對不對」,還要看未來 table structure 改變時是否容易壞。原書因此把 XLOOKUP 視為比 VLOOKUP/HLOOKUP 更 robust 的選擇,但仍保留舊函數教學以考慮版本相容性。
請根據 VLOOKUP column index = 2 與 XLOOKUP separate arrays 的差異,解釋為什麼插入一個新 column 可能讓 VLOOKUP 變脆弱,以及 exact match 為什麼應明確用 0/FALSE。
**問題:**若 VLOOKUP 最後一個 Range_lookup 參數留白,原書警告可能發生什麼?