Excel 函式 - VLookup 常見問題和使用技巧(超詳細)
相信大家工作中用到的最多最複雜的查詢函式就是 Vlookup了,它真的很強大和實用,解決了工作中 90%的資料查詢和匹配問題。我工作中最先接觸,用的最多的也是 Vlookup 函式,這裡我總結一下我在使用中常遇到的一些問題和使用技巧,希望它能讓你 v 的更有成功。此文也獻給和我一起共事過的同事,紀念我們在此函式上跳過的種種坑 。。。
相信小的力量,每天進步一點點,堅持帶來大改變!
對函式使用比較熟的讀者可以跳過第一節直接看函式的常見問題和高階應用。
一、引數介紹及注意事項
先囉嗦一下函式的工作原理,有助於你更好的理解下面的內容。
1. 函式工作原理
直接講上面的引數比較難懂,先說說它的工作套路吧。例如下面的例子問 Excel 老闆 “頭頭” 的剩餘年假。
你直接問 Excel 它肯定會告訴你:“我怎麼知道呢,我都沒有年假的資料”。OK,現在我給你資料 (也就是H:J,“搜尋表區域”,引數2)。接著它又發問了,我不知道老闆的員工編碼,你的資料裡沒有員工名稱。sorry,老闆的編碼是 “18110001”(引數1,待搜尋單元格)。Excel 開始很賣力的表現,在你資料的第一列從頭到尾找 “1811001”。太碰巧了,它就在第二行,完全 match(引數4)毫不費力!!!but, 你想要的是年假,它細看發現年假在資料中的第二列(引數3指定)。有結果了,老闆還有 22 天沒休,工作狂!Excel,well done!
計算機點說就是在 “搜尋表區域” (引數2) 中的第一列從上到下按引數 (4) 指定的方式精確或模糊查詢 “待搜尋單元格” (引數1) 的值,如有匹配的行則返回 “搜尋表區域” 中第 N (用引數 (3) 指定)列的值。無匹配行時返回 #NA。
2. 引數介紹和選參注意事項
- 待搜尋單元格:記住必須為一個單元格,或一個數值、字串以及函式返回值。不能為一整列如 A:A。
- 搜尋表區域:待匹配的列必須放為第一列。例如按員工編碼、產品編碼查詢其名稱時公司編碼不能放在第一列。
- 返回值的列序號:必須為一個數字,第一列從 1 開始。
- 查詢方式:用 0 或 FALSE 表示精確查詢,1 或 TRUE 表示模糊查詢。可選引數,如忽略則用模糊查詢。
3. 引數選擇技巧
-
這裡我要首先要介紹的是怎麼快速判斷返回值的列序號,起初我是傻傻的用手指一個一個去數的:)
如上圖,在工作表的左上角文字框(如紅框標註)會顯示當前選定單元格在選定區域中的行號和列號,R 表示 Row,C 表示 Column。7C 說明剩餘年假在第 7 列。 -
精確查詢 vs 模糊查詢:精確查詢容易理解,就是兩個值完全相等。模糊查詢是指:在區域的第一列中查詢小於並且最接近於單元格值的數值,如下面按成績評級的例子:
在 F列中找比61小並且最接近61的值,結果為60,它在第 3 行,然後返回它第二列的值 “及格”。 -
搜尋表區域的選擇,這裡我建議按列的方式選取,例如:B:E,選擇B到E列。採用這種方式時當表格的行數增加時你不用重新修改公式。無法按列選取時,為了確保公式在向下應用到其他單元格時不發生變動,區域的指定必須採用絕對引用,就是在行列前加上 $。
如上圖中的 E 列用了相對引用導致 E6 的結果錯誤。 -
單元格的相對引用快速切換到絕對引用,例如把上圖的 A10:B14 快速切換到 $A B$14。編輯公式時直接在引用如 A10 或 B14 上按快捷鍵 F4。
二、函式應用常見問題和解決辦法
1. 資料型別不匹配
你的資料明明在表裡,用 Vlookup 就是 v 不出來呢?資料型別不匹配是個最常見的問題。在應用此公式時必須確保待搜尋區域首行的資料型別和單元格的資料型別完全相同,即同為數字、字串或其他。做到這個確保有時實操起來還是比較難的,這裡我列幾個小技巧:
- 在做資料的格式轉換時,例如把文字轉換成數字時注意會丟失前面的 0。如 “0018109” 轉換為數字時會自動丟失前面的兩個0,變為 18109,這樣的問題可能會導致錯誤的結果。
- V 不出來可能是因為單元格的內容 Excel 認為包含錯誤,並且也被忽略,導致它無法正確判斷其中用到的資料型別。如有必要你可以在 “檔案 --> 選項 --> 公式” 的 “錯誤檢查” 欄中點選 “重新設定忽略錯誤” 顯示所有也被忽略的錯誤,設定完成後內容有誤的單元格左上角會自動顯示綠色小三角。記著含這些內容的單元格是無法通過更改格式來轉換型別的,除非你手動的一一處理小三角。
- 如果錯誤的單元格很多,一一糾正是不可能的,這裡我介紹一個函式 TRIM,它能把待匹配的內容去除前後空白,並轉換為文字型別,然後你就能按文字型別來進行 Vlookup。方法如下圖:
員工編碼為數字,但用來匹配的 E 列資料質量太差,含錯誤或前後空白,導致 C 列結果有很多 #N/A。此時你要在“員工編碼” 後新加一列 F 並用 TRIM 函式把它的內容糾正去空白,然後用同樣的函式對單元格(A2)的內容糾正去空,然後用函式 TRIM(A2) 的返回值在 F :G區域查詢結果。
2. 含前後空白,製表符、或回車等不可見字元
你可以在單元格編輯模式下檢視單元格是否含前後空白、製表符、特殊字元等。另外一個簡單的方式查空白、製表符是對單元格內容臨時加下劃線。這裡我介紹一下怎麼處理這些特殊的符號:
- 前後有半形空白,直接用 TRIM 函式去除,如上圖。
- 全形空白,也就是中文的空格。一是用查詢替換功能直接刪除單元格內的所有全形空白,二是用公式: SUBSTITUTE(A1, UNICHAR(12288), “”) 替換去除
- 製表符,用查詢替換功能直接刪除或用公式 SUBSTITUTE(A1, CODE(32), “”) 替換去除
- 回車符,用公式 SUBSTITUTE(A1, CODE(10), “”) 替換去除
- 其他特殊字元請手動處理
3. 滿足條件的行不唯一
Vlookup 在找到滿足條件的第一行時就返回結果,如下圖返回第一行的20,重複的行會被忽略。
如果資料的值不唯一時請在 Vlookup 前對資料進行排序,確保你期望的資料排在前面。
4. 試圖進行反向選取返回列
Vlookup 不支援反向選取返回列,如按產品編碼返回總庫存時,總庫存必須在編碼的後面。
三、函式的高階應用
1. 按多個單元格的值搜尋資料
這個搜尋資料的方式在日常工作中有很多需求,例如按倉庫和產品編碼搜尋它的庫存。你也可以用 SUMPRODUCT 函式完成,不過這個函式比較難理解。這裡我說說怎麼用 Vlookup 完成。首先你要對用到的單元格,和資料列用操作符 & 或函式 CONCATENATE 進行連線,然後再應用 Vloookup 函式,見下圖:
在產品編碼後面加上一列連線倉庫和產品的編碼,然在在其上搜索連線後的單元格值。
2. 帶萬用字元搜尋資料
Vlookup 支援萬用字元 * 和?進行模糊查詢。可以分別使用它們來代替一個或多個真正的字元在搜尋區域中查詢資料,下圖中我分別示範了怎麼用萬用字元做包含、依開頭、依結尾、和特定位置含特定文字的查詢。
如果你要找的是萬用字元,請在它前面加 ~ 進行轉譯,如上圖 F6的例子查詢名字含 * 的員工。
3. 返回值 #NA 時用指定的值替代
#NA 空值時是不方便於資料彙總的,此時你可以要求用指定的值,如 0 替換它。這裡你要用到的一個條件判斷函式 IF,它能判斷指定的條件,如果滿足時返回函式第二個引數指定的值,否則返回第三個引數指定的值。
假如單元格 A1 為分數 89,你可以用函式 IF (A1 >= 60,“及格”,“不及格”) 判斷分數是否及格。判斷是否為空值用 ISNA 函式,下面我綜合起來講一個查詢庫存的例子,如無庫存時預設用 0 替代。
如上圖 D2 先用 ISNA(VLOOKUP(A2, F:G, 2, 0)) 判斷 v 出來的結果是否為空,為空時用 0 替代,否則使用 VLOOKUP(A2, F:G, 2, 0) 的值。
全文完!歡迎評論,如果你喜歡這篇文章, 請記得點贊哦,謝謝!
本文為作者原創文章,未經作者允許不得轉載。