在進入介紹前,我們來說明一下,這兩個函數為什麼會叫做VLOOKUP、HLOOKUP。
首先look up,相信大家看到的第一反應一定是「抬頭」,沒錯這個詞可以譯為抬頭,但同時它也有許多不同的意思:好轉、查閱、探望,而這裡函數應該要翻譯為查閱。
再來V和H分別是甚麼呢?聰明的大家一定都知道了,就是Vertical(垂直)、Horizontal(水平)這兩個單字,因此這兩個函數的簡單解釋就是:
VLOOKUP-垂直方向尋找相同資料,並回傳對應欄位的值
HLOOKUP-水平方向尋找相同資料,並回傳對應欄位的值
延伸閱讀:【Excel】雙條件、多條件查詢(Multiple Conditions)
VLOOKUP
=VLOOKUP(a, b, c, d)
a:尋找值
b:資料來源
c:第幾欄
d:相似程度(FALSE-完全相等;TRUE或省略-相似)
我們以這圖為範例做個簡單的教學,我的目標是要讓Excel自動幫我找出小莫的體重,並填入[H3]這格儲存格。你是不是覺得只要看一下左方的資料表,這個一點都不難,我只要在滑鼠點擊[H3]這格,並在鍵盤上key 53就完成了。
但是各位試想一下,如果資料來源筆數很多欄位也很多,又要去對應出多筆資料,是不是費時又費工。而這邊我們來使用VLOOKUP,就可以讓一小時的工作量,在短短的3~5分鐘內就完成。
=VLOOKUP(尋找值,資料來源,第幾欄,相似程度)
首先在[G3]填入小莫,而[H3]使用函數,第一個參數尋找值,我們要尋找小莫的體重,尋找小莫,因此要填入G3。
第二個參數資料來源,資料表為左邊[B3]到[E10],在這用手key或用拉的填入B3:E10,記得按一下鍵盤上方的F4,讓它變成$B$3:$E$10,這就是你的資料來源,這裡加上$是為了讓我們在使用下拉自動填滿的時候,資料行列不要跟著跑掉,如果要做浮動的資料來源,可以依照自己的需求決定$使用與否。
第三個參數第幾欄,名字是第一欄,身高是第二欄,依此類推一直往右邊。我們要找的體重是第三欄,所以這裡填入3。
第四個參數相似程度,要找完全相等的所以填入FALSE,如果是要找相似的可以填入TRUE,或者不使用第四個參數。但是如果想要更細的配對相符規則,我之後會寫一篇XLOOKUP的文章,有興趣的人到時候可以再去看一下該篇文章。最後只要按下Enter就大功告成,完成一開始的目標:要讓Excel自動幫我找出小莫的體重,並填入[H3]這格儲存格。
這邊要注意的就是直接使用VLOOKUP這個函數只能去比對第一欄的資料,這個值要是唯一值,在資料庫就會被稱為Primary Key(PK)。所以一定要把做為尋找依據的資料放在最左邊的第一欄,以這次的例子為例,尋找依據的資料就是名字。
當然還是有辦法尋找不是第一欄的資料,這裡可以使用 INDEX + MATCH 或者 XLOOKUP 來解決這個問題。
HLOOKUP和VLOOKUP的運算邏輯是一模一樣的,只是方向改變了,從垂直尋找改成水平尋找,我在下方有展示了HLOOKUP的例子,各位可以看一下,目標是要讓Excel自動幫我找出全球英檢參考指標C1對應的其他檢定指標(雅斯)值,並填入[J3]這格儲存格,同時檢視自己有沒有學會剛剛所學的新函數,有任何問題請不要害羞,可以在下方留言給我一起討論。
HLOOKUP
=HLOOKUP(a, b, c, d)
a:尋找值
b:資料來源
c:第幾列
d:相似程度(FALSE-完全相等;TRUE或省略-相似)
更多 Excel 文章請至 文章導覽 尋找,也可利用上方「搜尋(Search...)」功能
有任何莫非工具的問題,歡迎至「表單」提問
Excel 是不是很容易
和墨菲一起用 Excel 把工作變簡單
VLOOKUP(english ver.)
=VLOOKUP(a, b, c, d)
a:look up value
b:table array
c:column index number
d:range lookup(FALSE-match;TRUE or blank-approximate match)
HLOOKUP(english ver.)
=VLOOKUP(a, b, c, d)
a:look up value
b:table array
c:row index number
d:range lookup(FALSE-match;TRUE or blank-approximate match)
一直以來都對excel不熟悉
你的教學內容真的很簡單明瞭
謝謝你!
Hi Shani~
謝謝,妳的留言就是我們繼續寫作的動力😊😊😊
有任何問題也歡迎發問,或是到IG、FB粉絲專頁留言
也可以到「表單」提問喔~
Pingback: 莫非工具 | 文章導覽 - 墨菲莫非
你好,參考很多關於您發布的EXCEL文章,都非常受用,我這裡有一張人資表格需用index+match及lookup處理相關內容,但一直無法處理到滿意
我利用薪資勞保級距表所指定薪資及應投保的金額,做表格顯示,但薪資33300為一階應付保費2797,下一階薪資34800應付保費2924,
但在這33300~34800範圍內的數字例如33900需帶出34800那一階的保費,不管用index+match或lookup皆無法讓保費順利往下一階帶出,
想請教高手是否有方式可提供參考,感謝
Hi 林沂儒,
很高興收到您的留言,首先想詢問,您所使用的Excel版本
在「Microsoft 365」中有提供「XLOOKUP」這個函數,可以「根據級距尋找資料」
可以參考這篇文章:【Excel Function】XLOOKUP 尋找資料 (Find Corresponding Cell)
有其他問題歡迎在表單中提問:【莫非工具】職場技能
是的,版本是Microsoft 365,尋了好多LOOKUP相關函,在裡面繞不出來,完全不知道原來是XLOOKUP,感謝指教
Hi 沂儒~
謝謝,可以幫助到您,我也很開心
您的留言就是我們繼續寫作的動力😊😊😊
有任何問題也歡迎發問,或是到IG、FB粉絲專頁留言
也可以到「表單」提問喔~
您好:
因為EXCEL版本沒有XLOOKUP,所以我使用了 INDEX + MATCH,但無法準確的傳回該表格的格式(如:有加網底、紅字),
請問有可以回傳相同格式的辦法嗎?
謝謝您!
Hi Jayde,
首先很高興收到妳的留言。
妳希望於使用函數時,同時可以將該儲存格的格式一併帶入
Excel內建所提供的函數並無法完成此功能,這需要使用到 VBA 才有辦法完成
這裡我試寫了一個自定義的Function給您參考「查尋資料一併回傳文字顏色」:
1.首先請開啟「開發人員」功能:檔案>選項>自訂功能區>開發人員
2.將檔案另存新檔為「啟用巨集的活頁簿(*.xlsm)」
3.開啟開發者介面「Alt+F11」
4.於左側VBAProject(檔名.xlsm),按滑鼠右鍵>插入>模組
5.此時下方會新增一個檔案(Module1),並於檔案中貼上下方範例Code,並存檔
Function MyVLookup(lookup_value As Variant, table_array As Range, col_index_num As Integer) As Variant
Dim lookup_range As Range
Dim result_cell As Range
' 設定查找範圍
Set lookup_range = table_array.Columns(1)
' 在尋找範圍中尋找匹配值
Set result_cell = lookup_range.Find(lookup_value, LookIn:=xlValues, LookAt:=xlWhole)
' 如果找到匹配值,則傳回對應的值
If Not result_cell Is Nothing Then
' 回傳值
MyVLookup = result_cell.Offset(0, col_index_num - 1).value
' 賦予顏色
Application.Caller.Font.color = result_cell.Offset(0, col_index_num - 1).Font.color
Else
' 如果未找到匹配值,則傳回錯誤值
MyVLookup = CVErr(xlErrNA)
End If
End Function
這樣在頁面中就可以自行調用「MyVLookup」這個函數,如「=MYVLOOKUP(D19,A2:B11,2)」
此函數回將文字顏色一併回傳
至於網底顏色的部分,沒辦法依靠函數直接完成:
函數(function)旨在根據輸入參數傳回值,並不會修改儲存格的結構或外觀。
若要修改儲存格外觀,需要使用到自定義子程序(Sub)
Sub無法直接使用,需要有一個起始的行為或開關才能完成
使用Sub去調動Function同時賦予對應儲存格網底顏色
這部分會比較花一點時間,所以我這就沒寫範例了
這裡有官方的教學「呼叫 Sub 和函式程序」
之後我也會撰寫基礎的 VBA 文章,想深入研究 VBA 可以持續 followr 墨菲莫非
有任何其他問題都可以到IG、FB粉絲專頁留言,或是到「表單」提問喔~