VLOOKUP #N/A 錯誤代表查找值無法在資料範圍中找到匹配結果(Not Available),是 Excel 查找函數最常見的錯誤類型。 本文完整解析 6 大 #N/A 原因與診斷方法,教你用 IFERROR、IFNA 讓錯誤不顯示,並附人資薪資查找的實務修正案例與預防 SOP。
目錄
ToggleVLOOKUP #N/A 錯誤是什麼?30 秒快速診斷
當 VLOOKUP 回傳 #N/A,代表函數在你指定的資料範圍中「找不到」查找值。這不是公式語法錯誤,而是「查找失敗」——可能是資料本身有問題,也可能是公式設定不正確。
在開始逐一排查之前,先用下面這張快速診斷表,30 秒內判斷你的問題屬於哪一類:
| 你看到的症狀 | 最可能的原因 | 對應章節 |
|---|---|---|
| 肉眼看起來一模一樣,卻回傳 #N/A | 數字與文字型態不符,或含隱藏空格 | 原因二、原因三 |
| 部分資料找得到、部分找不到 | 資料不一致、重複值、或個別儲存格格式不同 | 原因二、原因六 |
| 全部都回傳 #N/A,沒有一筆成功 | 表範圍設定錯誤、查找欄不在第一欄 | 原因四 |
| 以前可以正常查找,現在突然不行 | 資料來源格式變更(如系統匯出格式改變) | 原因三、原因五 |
| 大部分正確,但數值結果看起來怪怪的 | range_lookup 設為 TRUE 或省略,近似查找出錯 | 原因五 |
本文的結構是:診斷原因 → 修正公式 → 實務案例 → 預防機制,你可以根據上表直接跳到對應段落。如果你對 VLOOKUP 語法 還不太熟悉,建議先看下一節的快速回顧。

VLOOKUP 語法快速回顧(含常見誤用)
VLOOKUP 的完整語法如下:
=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
四個參數的作用:
- lookup_value(查找值):你要找的目標值,例如員工編號「A001」或產品代碼「P-001」
- table_array(資料範圍):包含查找資料的表格範圍,查找值必須在這個範圍的第一欄
- col_index_num(欄位序號):要回傳第幾欄的資料,從 table_array 的第一欄算起(第一欄 = 1)
- range_lookup(查找模式):FALSE = 精確查找,TRUE = 近似查找(可省略,省略時預設為 TRUE)
這四個參數中,有兩個設定方式特別容易導致 #N/A 錯誤,很多人用了好幾年 VLOOKUP 都沒注意到:
⚠️ 誤用一:range_lookup 省略不寫 很多人寫
=VLOOKUP(A1, B:D, 2)就結束了,省略第四個參數。但省略等於 TRUE(近似查找),這時 Excel 會假設你的資料已經按升冪排序——如果沒排序,結果可能是錯的,甚至直接回傳 #N/A。建議:99% 的情況都應該明確寫 FALSE。⚠️ 誤用二:col_index_num 寫死數字 例如寫
col_index_num=3,當你在 table_array 中間插入一欄後,原本第 3 欄的資料變成第 4 欄,但公式還是抓第 3 欄——不會報 #N/A,但會回傳錯誤的資料,比 #N/A 更危險。
如果你想更深入了解 VLOOKUP 的進階用法,可以參考 VLOOKUP 完整語法教學。接下來我們進入 #N/A 的六大原因逐一拆解。

六大 #N/A 原因完整解析(含診斷方法)
以下六個原因涵蓋了 VLOOKUP 回傳 #N/A 的所有常見情境。每個原因我都會提供診斷方法(怎麼確認是不是這個問題)和修正方向(怎麼解決),讓你不只知道「為什麼錯」,還能立刻動手修。
原因一:查找值不存在於資料範圍
這是最直覺的原因——你要找的值,在資料表裡根本沒有。
常見情境:
- 員工已離職,但查找表還在用舊編號
- 新增的產品代碼還沒被加入主資料表
- 查找值有拼寫錯誤(例如「A001」打成「A0O1」,數字 0 和字母 O 混淆)
診斷方法: 用 COUNTIF 確認查找值在資料範圍中出現幾次:
=COUNTIF(B:B, A1)
如果結果為 0,代表查找值確實不存在。這時候不是公式的問題,而是資料本身需要補齊。
修正方向:
- 確認資料來源是否完整,是否有遺漏的記錄
- 如果確實有部分值不存在(例如新進員工),用 IFNA 包裝公式顯示提示文字(詳見第四章)
原因二:數字與文字型態不符(最常見)
這是我在實務中遇到最多的 #N/A 原因。兩個儲存格看起來都是「1001」,但一個是數字、一個是文字,VLOOKUP 會認為它們不一樣。
怎麼判斷儲存格是數字還是文字?
- 靠右對齊 = 數字(Excel 預設數字靠右)
- 靠左對齊 = 文字(Excel 預設文字靠左)
- 更精確的方法:用
=ISNUMBER(A1)驗證,回傳 TRUE 代表數字,FALSE 代表文字
診斷方法: 同時檢查查找值和資料表中的對應欄位:
=ISNUMBER(A1) ← 檢查查找值
=ISNUMBER(B2) ← 檢查資料表第一欄
如果一個是 TRUE、一個是 FALSE,就是型態不符。
修正公式(3 步驟完整流程):
以客戶編號為例,假設 A 欄的查找值是文字「1001」,B 欄資料表中是數字 1001:
步驟一: 確認哪邊是文字、哪邊是數字
=ISNUMBER(A1) → FALSE(文字)
=ISNUMBER(B2) → TRUE(數字)
步驟二: 用 VALUE() 將文字轉為數字(或用 TEXT() 將數字轉為文字)
=VLOOKUP(VALUE(A1), B:D, 2, FALSE)
步驟三: 如果整欄都需要轉換,使用「資料 → 資料剖析」功能批次轉換: 1. 選取整欄文字型數字 2. 點選「資料」→「資料剖析」 3. 直接按「完成」,Excel 會自動將文字型數字轉為真正的數字
這個「資料剖析」技巧比逐一用 VALUE() 轉換快得多,處理上千筆資料只需要 3 秒。
原因三:隱藏空格與不可見字元
從 ERP 系統、網頁或其他資料庫複製貼上的資料,經常會帶入肉眼看不見的空格或特殊字元。這是「明明看起來一樣卻找不到」的第二大元凶。
常見來源:
- 系統匯出的 CSV 檔案,欄位前後帶空格
- 從網頁複製貼上,帶入不可見的換行字元(如
CHAR(160)不斷行空格) - 資料輸入時不小心多按了空白鍵
診斷方法:
用 LEN() 比對字元數:
=LEN(A1) ← 查找值的字元數
=LEN(B2) ← 資料表中看起來相同的值的字元數
如果兩個數字不一樣(例如一個是 5、一個是 7),代表有隱藏字元。
更進一步,用 CODE() 找出隱藏字元是什麼:
=CODE(LEFT(A1,1)) ← 檢查第一個字元的 ASCII 碼
=CODE(RIGHT(A1,1)) ← 檢查最後一個字元的 ASCII 碼
空格的 ASCII 碼是 32,不斷行空格是 160。如果看到這些數字出現在不該出現的位置,就是問題所在。
修正公式(批次清理整欄的完整步驟):
以產品代碼含空格為例:
步驟一: 在空白欄(例如 D 欄)輸入清理公式:
=TRIM(CLEAN(A1))
- CLEAN() 移除不可列印字元(ASCII 0-31)
- TRIM() 移除前後空格,並將中間的多餘空格縮減為一個
步驟二: 將公式往下拖曳,覆蓋所有資料列
步驟三: 選取 D 欄的清理結果,按 Ctrl+C 複製
步驟四: 選取 A 欄原始資料,按 Ctrl+Shift+V(或右鍵 →「選擇性貼上」→「值」),用清理後的值覆蓋原始資料
步驟五: 刪除 D 欄的輔助欄
💡 進階技巧: 如果 TRIM+CLEAN 還是無法解決(例如含有 CHAR(160) 不斷行空格),用 SUBSTITUTE 替換:
=TRIM(CLEAN(SUBSTITUTE(A1, CHAR(160), " ")))
如果你經常需要處理各種 Excel 公式 的錯誤,建議把這組清理公式存成常用範本。
原因四:表範圍(table_array)設定錯誤
這個原因通常導致全部都回傳 #N/A,而不是只有部分。
常見情境:
情境 A:查找值不在 table_array 的第一欄
=VLOOKUP(A1, C:E, 2, FALSE)
如果 A1 的查找值應該對應 B 欄,但 table_array 從 C 欄開始,VLOOKUP 會在 C 欄中找——當然找不到。
情境 B:範圍未鎖定,公式下拉後偏移
=VLOOKUP(A2, B2:D10, 2, FALSE)
當你把這個公式從第 2 列往下拖到第 5 列,table_array 會變成 B5:D13——範圍整個跑掉了。
診斷方法: 點選含有 VLOOKUP 的儲存格,在資料編輯列中點一下 table_array 參數,Excel 會用藍色框標示實際選取的範圍。確認: 1. 藍色框的第一欄是否包含你要查找的值 2. 藍色框是否涵蓋所有資料列
修正方法: 加上絕對參照($),鎖定範圍:
=VLOOKUP(A2, $B$2:$D$100, 2, FALSE)
這樣不管公式往下拖幾列,table_array 都不會跑掉。
原因五:range_lookup 設為 TRUE 或省略
前面語法回顧已經提過,這裡深入說明近似查找的運作邏輯,幫你理解為什麼會出錯。
近似查找(TRUE)的運作方式: 1. Excel 假設 table_array 第一欄已按升冪排序 2. 從上往下找到「小於或等於」查找值的最大值 3. 如果查找值小於第一欄的最小值,回傳 #N/A
舉例: 資料表第一欄是 [100, 200, 300],查找值是 50。因為 50 小於最小值 100,Excel 找不到任何「小於或等於 50」的值,所以回傳 #N/A。
診斷方法: 1. 檢查公式中 range_lookup 是否為 TRUE 或被省略 2. 檢查資料是否已按第一欄升冪排序
建議: 除非你明確需要近似查找(例如成績等第對照、稅率級距),否則一律設為 FALSE。這能避免 90% 以上因排序問題導致的 #N/A 或錯誤結果。
原因六:資料重複導致查找結果不穩定
嚴格來說,資料重複不一定會導致 #N/A,但會讓查找結果不可預測——VLOOKUP 永遠只回傳第一個符合的值。
常見情境:
- 員工編號重複(同一編號對應不同人)
- 產品代碼在不同批次中重複使用
診斷方法: 用 COUNTIF 標示重複值:
=COUNTIF(A:A, A1)>1
回傳 TRUE 的儲存格代表有重複。
修正方向:
- 先去重:使用「資料 → 移除重複項」功能
- 如果重複是合理的(例如同一客戶有多筆訂單),VLOOKUP 無法處理這種需求,建議改用 INDEX+MATCH 搭配條件,或使用 XLOOKUP(詳見進階替代方案章節)
想了解更多 Excel #N/A 錯誤 的排查方法,包括其他函數導致的 #N/A,可以參考我們的完整指南。

讓 #N/A 不顯示錯誤:IFERROR、IFNA、ISNA 完整比較
確認並修正 #N/A 的根本原因後,有些情況下你仍然需要讓公式「優雅地」處理找不到的情況——例如查找值確實不存在於資料表中(新進員工、停產產品等)。這時候就需要用錯誤處理函數包裝 VLOOKUP。
Excel 提供三種處理 #N/A 的方式,它們的差異很重要:
| 函數 | 捕捉範圍 | 適用情境 | 風險 |
|---|---|---|---|
| IFERROR | 所有錯誤類型(#N/A、#REF!、#VALUE! 等) | 快速包裝,不在意錯誤類型 | 可能掩蓋其他公式錯誤 |
| IFNA | 僅 #N/A | 需區分「找不到」與「公式本身有錯」 | 無,推薦使用 |
| IF+ISNA | 僅 #N/A | 需在同一公式中對 #N/A 和正常結果做不同處理 | VLOOKUP 會執行兩次,效能較差 |
我的建議:優先使用 IFNA。 它只捕捉 #N/A,如果你的公式有其他錯誤(例如 #REF! 代表欄位序號超出範圍),IFNA 不會幫你藏起來,你還是能看到問題並修正。IFERROR 雖然方便,但容易把所有錯誤都吞掉,讓你以為一切正常。
VLOOKUP NA 顯示空白
最常見的需求——讓找不到的儲存格顯示空白而非紅色的 #N/A:
=IFNA(VLOOKUP(A1, B:D, 2, FALSE), "")
雙引號中間沒有任何字元,代表空字串。儲存格看起來會是空白的。
VLOOKUP NA 顯示 0
=IFNA(VLOOKUP(A1, B:D, 2, FALSE), 0)
⚠️ 注意: 顯示 0 會影響後續計算。如果你用 SUM 加總這一欄,0 不會造成問題;但如果你用 AVERAGE 計算平均值,這些 0 會被計入,拉低平均結果。如果不希望影響 AVERAGE,建議用空白(””)而非 0。
VLOOKUP NA 顯示自訂提示文字
=IFNA(VLOOKUP(A1, B:D, 2, FALSE), "查無資料,請確認編號")
這在實務中非常實用——當同事看到「查無資料」而非 #N/A,他們更容易理解問題出在哪裡,而不是來問你「這個紅色的東西是什麼」。
何時不應該隱藏 #N/A 錯誤
並非所有 #N/A 都應該被隱藏。如果 #N/A 代表資料缺漏(例如薪資表中某位員工的薪資找不到),隱藏錯誤可能讓你忽略嚴重問題——想像薪資結算時少算了一個人的薪水。
判斷框架:
- ✅ 可以隱藏:查找值「本來就可能不存在」(例如查找新客戶是否為舊客戶)
- ❌ 不應隱藏:查找值「應該要存在」(例如在職員工的薪資查找)
- 折衷方案:用醒目的提示文字(如「⚠️ 資料缺漏」)取代隱藏,確保問題被看見
想了解更多 IF 函數條件判斷 的應用方式,包括巢狀 IF 和多條件判斷,可以參考我們的專文教學。

實務案例:從出錯到修正的完整流程
前面講了六種原因和三種錯誤處理函數,現在用一個完整的實務情境把它們串起來。這個案例來自人資部門的常見場景,一次會遇到多種 #N/A 原因。
情境設定——人資部門的薪資查找表
人資部門有兩張表:
表 A(查找表): 本月在職員工名單,A 欄是員工編號,需要查找薪資和部門
表 B(資料表): 從 HR 系統匯出的完整員工資料,包含員工編號、姓名、部門、月薪
人資用 VLOOKUP 從表 B 查找每位員工的月薪:
=VLOOKUP(A2, 表B!A:D, 4, FALSE)
結果:200 筆員工中,有 47 筆回傳 #N/A。人資同事慌了——難道有 47 個人的薪資資料不見了?
第一關:型態不符(數字 vs 文字編號)
診斷: 先用 ISNUMBER 檢查兩邊的員工編號:
=ISNUMBER(A2) → FALSE(表 A 的編號是文字)
=ISNUMBER(表B!A2) → TRUE(表 B 的編號是數字)
原來表 A 是人資手動輸入的,員工編號被存成文字;表 B 是系統匯出的,編號是數字格式。
修正: 1. 選取表 A 的 A 欄(員工編號) 2. 點選「資料」→「資料剖析」→ 直接按「完成」 3. 文字型數字被轉為真正的數字
修正後,#N/A 從 47 筆降到 12 筆。35 筆是型態問題造成的。
第二關:系統匯出資料含隱藏空格
診斷: 剩下的 12 筆中,挑一筆來檢查:
=LEN(A5) → 4(查找值「1005」是 4 個字元)
=LEN(表B!A10) → 6(資料表中的「1005」竟然是 6 個字元!)
多出的 2 個字元是什麼?
=CODE(LEFT(表B!A10,1)) → 32(空格)
=CODE(RIGHT(表B!A10,1)) → 32(空格)
HR 系統匯出時,在編號前後各加了一個空格。
修正: 批次清理表 B 的員工編號欄:
1. 在表 B 的 E 欄輸入 =TRIM(CLEAN(A2))
2. 往下拖曳覆蓋所有列
3. 選取 E 欄,Ctrl+C 複製
4. 選取 A 欄,Ctrl+Shift+V 選擇性貼上「值」
5. 刪除 E 欄
修正後,#N/A 從 12 筆降到 3 筆。
第三關:部分員工確實不在名單中
診斷: 最後 3 筆用 COUNTIF 確認:
=COUNTIF(表B!A:A, A8) → 0
這 3 位是本月新到職的員工,HR 系統還沒建立他們的薪資資料。
修正: 這不是公式問題,而是資料尚未建立。用 IFNA 顯示有意義的提示:
=IFNA(VLOOKUP(A2, 表B!$A:$D, 4, FALSE), "新進員工,資料待建立")
為什麼用「新進員工,資料待建立」而不是空白或 0?因為薪資欄顯示空白,可能被誤認為「薪資為零」;顯示 0 更危險,可能被直接拿去計算。明確的提示文字讓後續處理的同事一眼就知道該怎麼做。

Excel Skills for Business|Macquarie University 認證
- 🏆 66 萬+ 學員選修——Coursera 平台上最熱門的 Excel 課程
- 📊 4 階段完整學程——公式、樞紐分析、圖表、儀表板全涵蓋
- 🎓 Macquarie University 認證——完成後可加入 LinkedIn 履歷
- 🌍 多語字幕支援——自學節奏、隨時隨地學習
✓ Coursera Plus 7 天免費試用 · ✓ 可隨時取消 · ✓ 完成後獲得正式證書
進階替代方案:INDEX+MATCH 與 XLOOKUP
VLOOKUP 雖然好用,但它有幾個結構性限制,在某些情境下會讓你不斷遇到問題。如果你發現自己經常需要「繞路」才能讓 VLOOKUP 正常運作,可能是時候考慮升級了。
什麼時候應該放棄 VLOOKUP?
- 查找欄不在資料表的第一欄(VLOOKUP 只能從左到右查找)
- 資料表經常插入或刪除欄位(col_index_num 寫死數字會失效)
- 資料量超過數萬列,VLOOKUP 計算速度明顯變慢
- 需要同時查找多個條件
INDEX+MATCH:VLOOKUP 的萬用替代
INDEX+MATCH 的組合可以完全取代 VLOOKUP,而且沒有「只能從左到右」的限制:
=INDEX(回傳範圍, MATCH(查找值, 查找範圍, 0))
對應到 VLOOKUP 的邏輯:
- MATCH 負責「找到查找值在第幾列」(等同 VLOOKUP 的查找功能)
- INDEX 負責「從指定範圍的第 N 列取值」(等同 VLOOKUP 的回傳功能)
實際範例: 用員工編號查找姓名
VLOOKUP 寫法:=VLOOKUP(A1, B:D, 2, FALSE)
INDEX+MATCH 寫法:=INDEX(C:C, MATCH(A1, B:B, 0))
INDEX+MATCH 的優勢是查找範圍和回傳範圍可以分開指定,不受欄位順序限制。想深入學習可以參考 INDEX MATCH 進階查找 教學。
XLOOKUP:最新也最強大的查找函數
XLOOKUP 是 Excel 365 和 Excel 2021 才有的新函數,設計上就是為了取代 VLOOKUP:
=XLOOKUP(查找值, 查找範圍, 回傳範圍, [找不到時的值], [匹配模式], [搜尋模式])
最大亮點: 第四個參數直接內建錯誤處理,不需要再外包 IFNA:
=XLOOKUP(A1, B:B, D:D, "查無資料")
這一行就等於 VLOOKUP + IFNA 的組合,更簡潔也更好讀。
三種函數怎麼選?
| 情境 | 建議函數 | 原因 |
|---|---|---|
| 簡單的左到右查找,使用 Excel 2016 以下版本 | VLOOKUP | 語法最簡單,相容性最好 |
| 需要向左查找,或欄位經常移動 | INDEX+MATCH | 不受欄位順序限制 |
| 使用 Excel 365 或 2021,需要最大彈性 | XLOOKUP | 內建錯誤處理,支援雙向查找 |
如果你的工作流程中需要大量使用 VBA 自動化查找,可以參考 VBA VLOOKUP 自動化 教學。

預防 #N/A 錯誤的資料管理 SOP
與其每次出錯再修,不如從源頭預防。以下是四個階段的具體操作規範,可以直接套用到你的日常工作中。
資料輸入階段:用驗證規則擋住錯誤
在資料輸入的源頭就設好規則,比事後修正省力一百倍:
- 設定資料驗證(Data Validation): 限制欄位只能輸入特定格式。例如員工編號欄設定「整數,介於 1000 到 9999」,防止有人輸入文字型編號
- 使用下拉選單: 對於部門名稱、產品類別等固定選項,用「資料驗證 → 清單」建立下拉選單,避免手動輸入造成的拼寫差異
- 統一編碼規則: 在團隊中明確規定「員工編號一律用數字」「產品代碼格式為 XX-000」,並寫在共用文件中
資料匯入階段:匯入後先清理再使用
從外部系統匯入的資料,永遠不要直接拿來用:
- 匯入後,先在輔助欄執行
=TRIM(CLEAN(A1))清理全欄 - 用
=ISNUMBER(A1)或=ISTEXT(A1)批次驗證型態是否一致 - 用
=LEN(A1)抽查幾筆,確認字元數合理 - 確認無誤後,用清理結果覆蓋原始資料
公式設計階段:三個必備習慣
寫 VLOOKUP 時養成這三個習慣,能避免大部分問題:
- range_lookup 一律寫 FALSE——不要省略,不要碰運氣
- table_array 一律加絕對參照 $——防止公式下拉後範圍偏移
- 外層一律包 IFNA——即使你認為「不可能找不到」,也要包,因為資料會變
標準寫法:
=IFNA(VLOOKUP(A2, $B$2:$D$100, 3, FALSE), "查無資料")
定期維護:每月檢查一次資料品質
- 用
=COUNTIF(A:A, A1)>1標示重複值,確認是否需要去重 - 用條件格式標示所有 #N/A 儲存格,快速定位問題
- 建立資料異動 log,記錄每次匯入或修改的時間與內容,方便追溯問題
資料剖析轉換型態約 10 秒,TRIM+CLEAN 批次清理約 30 秒,這兩個步驟能解決 80% 以上的 #N/A 問題。Excel 公式完整教學 中有 SUMIF、COUNTIF 等函數的同類型資料清理建議。

結論
回顧本文重點:
- #N/A 代表「查找失敗」,不是公式語法錯誤,問題通常出在資料本身
- 最常見的原因是數字與文字型態不符——用 ISNUMBER() 診斷,用 VALUE() 或資料剖析修正
- 「看起來一樣卻找不到」 幾乎都是隱藏空格造成的——用 LEN() 診斷,用 TRIM(CLEAN()) 修正
- 用 IFNA(而非 IFERROR)包裝公式,既能優雅處理找不到的情況,又不會掩蓋其他公式錯誤
- 預防勝於治療:range_lookup 寫 FALSE、table_array 加 $、匯入資料先清理——三個習慣就能避免 90% 的 #N/A
如果你發現自己每天花大量時間在 Excel 中做資料查找、比對和清理,而且經常需要多人協作同一份資料,這可能代表你的需求已經超出 Excel 的最佳使用範圍。monday.com 的自動化資料整合功能可以讓跨部門的資料查找和同步自動完成——不需要寫 VLOOKUP,也不會有 #N/A 的問題。免費方案不需要信用卡,可以先建一個看板試試。
monday.com|250,000+ 團隊的專案管理首選
- 📋 看板、甘特圖、時間軸——同一專案 3 種視圖自由切換
- ⚡ 200+ 自動化範本——截止提醒、任務指派、進度同步全自動
- 👥 從 2 人到 200 人團隊都適用——10 分鐘上手
- 🔗 整合 Gmail、Slack、Zoom 等常用工具——資訊不用到處找
✓ 免費版永久使用 · ✓ Fortune 500 有 60% 在用 · ✓ 不需信用卡
VLOOKUP #N/A 常見問題
VLOOKUP #N/A、#REF!、#VALUE! 有什麼不同?
這三種錯誤的意義完全不同,修正方向也不一樣:
- #N/A:查找值在資料範圍中找不到。修正方向:檢查資料一致性、型態、空格
- #REF!:參照無效,通常是 col_index_num 超出 table_array 的欄數(例如範圍只有 3 欄,卻寫 col_index_num=4),或者有人刪除了被參照的欄位。修正方向:檢查欄位序號和範圍
- #VALUE!:參數型態錯誤,例如 col_index_num 寫成文字而非數字,或 lookup_value 是一個陣列而非單一值。修正方向:檢查每個參數的型態
如果你同時看到多種錯誤,建議先修 #REF! 和 #VALUE!(這些是公式本身的問題),再處理 #N/A(這是資料的問題)。
為什麼 VLOOKUP 肉眼看起來一樣卻找不到?
這是最讓人抓狂的情況,系統性的診斷流程如下:
- 檢查型態:
=ISNUMBER(A1)和=ISNUMBER(B2)是否一致?如果一個 TRUE 一個 FALSE,就是型態問題 - 檢查字元數:
=LEN(A1)和=LEN(B2)是否相同?如果不同,有隱藏字元 - 檢查大小寫:
=EXACT(A1, B2)回傳 FALSE 代表有大小寫差異(VLOOKUP 本身不區分大小寫,但如果你用的是其他函數就需要注意) - 檢查隱藏字元:
=CODE(LEFT(A1,1))和=CODE(RIGHT(A1,1))看是否有空格(32)或不斷行空格(160)
按照這四步走一遍,99% 的「看起來一樣卻找不到」都能找到原因。
VLOOKUP #N/A 可以用 0 取代嗎?什麼時候不建議?
可以,用 =IFNA(VLOOKUP(A1, B:D, 2, FALSE), 0) 即可。但有兩種情況不建議用 0:
- 該欄位會被 AVERAGE 計算: 0 會被計入平均值,拉低結果。例如 10 個人的薪資中有 3 個是 #N/A,用 0 取代後平均薪資會被嚴重低估
- 0 本身是有意義的值: 例如庫存查找中,0 代表「庫存為零」,和「查無此產品」是完全不同的意思。用 0 取代 #N/A 會讓你分不清哪些是真的零庫存、哪些是查找失敗
這兩種情況建議用空白(””)或自訂提示文字取代。
VLOOKUP 能否多條件查找?
VLOOKUP 只支援單一查找值。多條件查找有兩種做法:
- 用 & 串接多個條件建立輔助欄: 例如在資料表和查找表各新增一欄,公式為
=A1&B1,將部門和員工編號串接成「行政部1001」,再用 VLOOKUP 查找這個串接值:
=VLOOKUP(A1&B1, 輔助欄範圍, 回傳欄數, FALSE)
- 改用 INDEX+MATCH 搭配陣列公式: 不需要輔助欄,直接在 MATCH 中用多條件比對:
=INDEX(D:D, MATCH(1, (A:A=條件1)*(B:B=條件2), 0))
這是陣列公式,在舊版 Excel 中需要按 Ctrl+Shift+Enter 確認。Excel 365 則可以直接按 Enter。
- 使用 XLOOKUP: XLOOKUP 本身也不直接支援多條件,但可以用類似的串接方式,或搭配 FILTER 函數實現更靈活的多條件查找。
當 VLOOKUP 不夠用時:資料協作工具的升級時機
如果你在 Excel 中遇到以下三種情境,代表你的需求可能已經超出 VLOOKUP 和 Excel 的最佳使用範圍:
- 資料超過 5 萬列,VLOOKUP 計算明顯變慢——每次按 Enter 都要等好幾秒,整個工作表變得遲鈍
- 需要 3 人以上同時編輯同一份資料——Excel 的共用活頁簿功能經常造成版本衝突,有人的修改會被覆蓋
- 資料來源每日自動更新,需要自動同步查找結果——你每天早上都要手動重新匯入資料、重新跑 VLOOKUP,這個流程本身就是浪費時間
這些情境下,專案管理與資料協作平台能從根本上解決問題:
monday.com——我們團隊實際使用的工具。它的自動化功能可以設定「當 A 表新增一筆資料時,自動在 B 表中建立對應記錄」,等於用自動化取代了 VLOOKUP 的查找邏輯。跨部門的資料整合不再需要手動比對,NT$288/人/月起,免費方案支援 2 人使用,不需要信用卡。
ClickUp——適合技術導向的團隊。它的多維度資料檢索功能可以同時用多個條件篩選資料(VLOOKUP 做不到的多條件查找),NT$224/人/月起。
Notion——如果你的需求偏向資料庫管理加上知識文件整合,Notion 的關聯式資料庫(Relation)功能可以在不同資料表之間建立連結,類似 VLOOKUP 但更直覺,NT$256/人/月起。
| 工具 | 最適合的情境 | 入門價格 | 免費試用 |
|---|---|---|---|
| monday.com | 跨部門資料整合、自動化通知 | NT$288/人/月 | 免費試用 → |
| ClickUp | 技術團隊多條件資料檢索 | NT$224/人/月 | 免費試用 → |
| Notion | 資料庫 + 知識管理整合 | NT$256/人/月 | 免費試用 → |
