【Excel Function】VLOOKUP、HLOOKUP 尋找對應資料 (Find Corresponding Cell)

  • Post author:
Home » 莫非工具 » Excel » 【Excel Function】VLOOKUP、HLOOKUP 尋找對應資料

在進入介紹前,我們來說明一下,這兩個函數為什麼會叫做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-vlookup
VLOOKUP

我們以這圖為範例做個簡單的教學,我的目標是要讓Excel自動幫我找出小莫的體重,並填入[H3]這格儲存格。你是不是覺得只要看一下左方的資料表,這個一點都不難,我只要在滑鼠點擊[H3]這格,並在鍵盤上key 53就完成了。

但是各位試想一下,如果資料來源筆數很多欄位也很多,又要去對應出多筆資料,是不是費時又費工。而這邊我們來使用VLOOKUP,就可以讓一小時的工作量,在短短的3~5分鐘內就完成。

excel-vlookup
=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-hlookup
HLOOKUP

更多 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)

excel-vlookup-en
VLOOKUP-en

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-hlookup-en
HLOOKUP-en

This Post Has 9 Comments

  1. Shani

    一直以來都對excel不熟悉
    你的教學內容真的很簡單明瞭
    謝謝你!

    1. Mr. Y

      Hi Shani~
      謝謝,妳的留言就是我們繼續寫作的動力😊😊😊
      有任何問題也歡迎發問,或是到IG、FB粉絲專頁留言
      也可以到「表單」提問喔~

  2. 林沂儒

    你好,參考很多關於您發布的EXCEL文章,都非常受用,我這裡有一張人資表格需用index+match及lookup處理相關內容,但一直無法處理到滿意
    我利用薪資勞保級距表所指定薪資及應投保的金額,做表格顯示,但薪資33300為一階應付保費2797,下一階薪資34800應付保費2924,
    但在這33300~34800範圍內的數字例如33900需帶出34800那一階的保費,不管用index+match或lookup皆無法讓保費順利往下一階帶出,
    想請教高手是否有方式可提供參考,感謝

      1. 林沂儒

        是的,版本是Microsoft 365,尋了好多LOOKUP相關函,在裡面繞不出來,完全不知道原來是XLOOKUP,感謝指教

        1. Mr. Y

          Hi 沂儒~

          謝謝,可以幫助到您,我也很開心

          您的留言就是我們繼續寫作的動力😊😊😊

          有任何問題也歡迎發問,或是到IG、FB粉絲專頁留言
          也可以到「表單」提問喔~

  3. JAYDE

    您好:
    因為EXCEL版本沒有XLOOKUP,所以我使用了 INDEX + MATCH,但無法準確的傳回該表格的格式(如:有加網底、紅字),
    請問有可以回傳相同格式的辦法嗎?

    謝謝您!

    1. Mr. Y

      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粉絲專頁留言,或是到「表單」提問喔~

歡迎留言,與我們分享你的看法!