或許你的同事、同學曾說過一個既熟悉又很陌生的字眼:
... 喔就那個 VLOOKUP 啊,你可以用用看,滿方便的 ...
V...?V 什麼?VTuber 我只單推桃鈴音音啊 (灬ºωº灬)
其實 VLOOKUP 能應用的範圍可以很廣,像是簡單的查表對照、資料驗證、跟 IF 的連動進而加減乘除等等都能用上。我可以很負責任地說,每天在做資料分析、生報表的時候,都會用到 VLOOKUP,使用頻率非常高!
所以所以!今天想寫長一點點的文,來盡量幫助大家把基本的 VLOOKUP 的概念解釋清楚,也會附上範例給大家參考!
所以 VLOOKUP 究竟是什麼?
「Vertical Look Up」,縱向查閱的意思。直接用圖來說明吧!我們這邊舉一個查表的例子。
今天你是一位班導師,想要找到這次期末考中某位學生各科的成績:
假如我想找到「王王王同學」的自然成績好了。拆解一下找這個資訊的過程,我們應該會:
- 在 A 欄找到王王王,發現姓名在 A3。
- 順著這行(第 3 行)往右邊找自然科的成績,也就是 D3。
- 就會得到 99 分的成績。
圖解的話,就會像是這樣:
所以你會看到第一步(在 A 欄找到王王王,發現姓名在 A3)就是縱向的查詢,試算表會先從開頭往下找符合「王王王」的資訊,之後再往右五欄(也就是自然科成績),就會找到相對應的資訊(找到 99 分)。
這就是開頭提到 VLOOKUP 的縱向查閱的意思:先往下找到符合的資訊、再往右取得相對應儲存格的值。目前看起來只有五筆資料,好像直接用肉眼找就可以了,但如果今天有幾千筆、幾萬筆資料的話,當然是直接丟給電腦做啦~
語法定義
那我們到底該怎麼把上面的步驟用 VLOOKUP 呈現呢?
=VLOOKUP(關鍵字, 範圍, 索引, [已排序])
- 關鍵字:儲存格 / 文字
例如:A2、B3、”台灣”、”王王王”。
要搜尋的關鍵字。
- 範圍:從~到~,並用「~:~」的格式呈現
例如:A1:F50(從 A1 到 F50)、C:D(從 C 欄到 D 欄)。
要搜尋的範圍,試算表會在範圍的第一欄尋找關鍵字。
- 索引:數字
例如:1、2、3,必須是正數。
索引的數字就是以範圍的第一欄為起始點算 1,往後算到目標欄位為止,包含開頭經過幾個欄位的意思。試算表會認定範圍中的第一欄是 1、第二欄是 2、第三欄是 3,以此類推。
- [已排序]:True、False,可省略,預設是 True。
代表範圍中的第一欄是否有排序,但大多數情況下,建議設為 False。如果有在範圍內有多個相符的關鍵字,系統會傳回第一個值對應的儲存格內容。
嗯,看起來有點複雜?那我這邊整理幾個重點給大家參考:
五個使用重點!
一、範圍怎麼寫?
因為試算表會在範圍的第一欄尋找關鍵字,所以我建議這邊的範圍就用關鍵字所在欄位作為起點、整個表格的最後一欄作為終點。拿剛剛的成績表來說:
關鍵字「王王王」在 A 欄,所以起點就是 A;終點就是整個表格的最後一欄 F 欄 了,所以範圍就是 A:F。
另外,如果你的 VLOOKUP 函式想要再複製到其他地方,會建議把這個範圍用「$」符號鎖定起來(像是 $A$1:$F$50)。不過如果你寫的是 A:E、A:F、A:G 這類沒有指定行數的範圍,向下複製函式就沒這個問題啦!
二、索引又怎麼寫?
索引的數字就是以範圍的第一欄為起始點算 1,往後算到目標欄位為止,包含頭尾經過幾個欄位的意思。一樣上圖:
我們在剛剛
的範圍指定了 A:E,那麼 A 就是起始點,也就是 1。而我們要查找的自然科所在欄位是 E,所以就從 A 算到 E 經過多少個數字,你就會得到 5 了(A、B、C、D、E)。
同樣地,如果我們要找社會科的成績,那就會是要得到從 A 到 F 一共經過多少欄位,也就會得到 6 囉(A、B、C、D、E、F)。
當然,有時候你的資訊不見得會在 A 欄,可能是 B、C、D,但原理都一樣,只要把起始欄位當作是 1,再從頭開始算,就會得到索引需要的數字了!
三、[已排序] 的 True 跟 False 是什麼、又該怎麼寫?
True 代表你在找的這個欄位有經過排序,可能是從 1 排到 9、從 A 排到 Z。如果你的資料確定有這樣排序,系統會傳回最接近的相符值。根據官方的說法,這麼做的話可以讓 VLOOKUP 有更好的運算效能,你可以考慮對搜尋的欄先做排序、再使用 True。
那看起來,只要事先把欄位排好就好啦!但我的看法是:
- 現實生活中絕大部分的資料都是沒有排好的、或是不允許我們能先對欄位排序再用 VLOOKUP。
- 如果你的資料含有中文字元,通常設 TRUE 來查找資訊比較容易出現錯誤、或是不正確的資訊。這是因為在 Google 試算表的排序邏輯跟我們平常了解的方法不太一樣,而且中文能排序的方式也很多(例如筆畫、部首、注音符號順序等),在 Google 試算表還沒辦法定義,所以直接告訴 VLOOKUP 資料有排序(True)會常常出現問題。
- 雖然是說會有更好的運算效能,但是實際對幾千筆資料檢測下來的結果,我覺得硬要說的話,真的只差那麼幾十毫秒而已,效能上沒什麼很顯著的差別。
所以我還是推薦寫 False 就好 ₍₍٩( ᐛ )۶₎₎♪!
四、想查找的欄位在關鍵字的左邊,這樣也可以 VLOOKUP 嗎?
不行!請把欄位放到你關鍵字的右手邊。
VLOOKUP 目前只支援往右找,還不能往左找。所以我的習慣是會把獨一無二的「身份」資訊(例如姓名、身分證字號、ID、電話號碼)放到最左邊的 A 欄,把剩下的數據(例如性別、國籍、成績、金額等等)就放 B 欄以後。
五、如果我的關鍵字在欄位裡有很多筆,那 VLOOKUP 會給我哪一筆資訊?
VLOOKUP 會往下找第一個出現的關鍵字,再往右回傳資訊。例如:
這邊有出現兩個「王王王」同學,在 A3 跟 A7 出現。VLOOKUP 會從 A1 開始往下查找符合「王王王」的資訊,第一個出現的就是 A3 的「王王王」。所以第二筆王王王就不會被 VLOOKUP 到啦!
範例
那我們回到剛剛這張表:
來想想函式要怎麼寫:
=VLOOKUP(關鍵字, 範圍, 索引, [已排序])
- 關鍵字:「王王王」在 A3,那就寫 A3。
- 範圍:整個表格範圍是從 A1 到 F6,你可以寫 $A$1:$F$6,或是 A:F。
- 索引:從 A 開始,往後算到自然科的 E 欄,包含頭尾一共經過了 5 個欄位,這邊就是 5 了。
- [已排序]:直接寫 False。
你就會得到:
=VLOOKUP(A3, A:F, 5, FALSE)
爽快按下 Enter,就會看到:
當然,如果要直接寫關鍵字也是可以的,但記得要加上雙引號:
=VLOOKUP("王王王", A:F, 5, FALSE)
這樣也會得到一樣的結果。
歡迎點進
連結,複製一份試算表到你的雲端硬碟,自己操作看看,也鼓勵你試試看查找不同的同學的成績喔!
順便聊一下 HLOOKUP、LOOKUP
其實還有一種查閱是橫向的,叫做 HLOOKUP(Horizontal Look Up),邏輯也和 VLOOKUP 一樣,只是方向是先往右作橫向搜尋、再往下。如果說 VLOOKUP 的使用時機是查找橫向表格(資料筆數往下生長)的資訊,那我就會說 HLOOKUP 是查找縱向表格的資訊(資料筆數往右生長)的資訊了。
還有,在 Google 試算表有另外一個叫做 LOOKUP 的函式,支援已排序好的列或欄中找關鍵字,並傳回符合的儲存格的值,是 VLOOKUP + HLOOKUP 的綜合版,一個函式就可以同時做到兩種查詢。但就像之前提到的,現實生活中不太會遇到已排序好的資料,到時候還是得拿出 VLOOKUP 或 HLOOKUP 來面對未排序的資料,所以我幾乎不用這個。
VLOOKUP 是新手登入試算表宇宙、老手征戰資料報表的重要武器之一,我強力推薦大家練習練習!
如果你喜歡這次的文章,歡迎你透過這些方法支持我:
・按下愛心、按下儲存
・留言告訴我你的想法
・加入喜特先生的官方沙龍,即時看到我發布的教學
・付費訂閱喜特先生的官方沙龍,加入每月小額訂閱方案
・追蹤喜特先生的 Facebook
・按這邊小額贊助我的創作!
我是喜特先生,Mr. Sheet,我們下個教學見!