VLOOKUP函數 (以下說明來自 Microsoft Excel 說明)
在表格陣列的第一欄中搜尋某個數值,並傳回該表格陣列中同一列之其他欄中的數值。

VLOOKUP 中的「V」代表「垂直」。當您比對的數值位於您想要尋找的資料左方的某一欄中時,請使用 VLOOKUP,而非 HLOOKUP。

語法
VLOOKUP(Lookup_value, Table_array, Col_index_num, Range_lookup)

Lookup_value
在表格陣列 的第一欄中搜尋的數值Lookup_value 可以是數值,也可以是參照位址。當 lookup_value 小於 table_array 第一欄中的最小值時,VLOOKUP 將會傳回錯誤值 #N/A。
(陣列:用來建立產生多個結果或運算一組以列及欄排列之引數的單一公式。陣列範圍共用一個公式;一個陣列常數是用作一個引數的一組常數。)

Table_array
兩欄以上的資料。請使用參照位址來指向某個範圍或範圍名稱。table_array 第一欄中的值即為 lookup_value 所搜尋的值。這些值可以是文字、數字或邏輯值 (不分大小寫)。

Col_index_num
table_array 中的欄號;相符的值將從該欄中傳回。如果 col_index_num 引數值為 1,則傳回 table_array 第一欄中的值;如果 col_index_num 引數值為 2,則傳回 table_array 第二欄中的值,依此類推。 如果 col_index_num:小於 1,則 VLOOKUP 會傳回錯誤值 #VALUE!。大於 table_array 中的欄數,則 VLOOKUP 會傳回錯誤值 #REF!。

Range_lookup
    一個邏輯值,用來指定 VLOOKUP 應該要尋找完全符合還是部分符合的值:
  1. 如果此引數值為 TRUE 或被省略了,則傳回完全符合或部分符合的值。如果找不到完全符合的值,將會傳回僅次於 lookup_value 的值。 在此情況下,table_array 第一欄中的值必須以遞增順序排序;否則,VLOOKUP 可能無法提供正確的值
  2. 如果此引數值為 FALSE,則 VLOOKUP 函數只會尋找完全符合的值。在此情況下,table_array 第一欄中的值便不需要排序。如果 table_array 第一欄中有兩個以上的值與 lookup_value 相符,將會使用第一個找到的值。如果找不到完全符合的值,則傳回錯誤值 #N/A。

註解
  1. 在 table_array 的第一欄中搜尋文字值時,請確認 table_array 第一欄中的資料不得包含前置空格、尾隨空格、不成對的標準引號 ( ' 或 " ) 和波浪形引號 ( ‘ 或 “) 以及非列印字元。否則,VLOOKUP 可能會提供錯誤或與預期不符的值。如需進一步瞭解有哪些函數可以用來「清理」文字資料,請參閱文字和資料函數。
  2. 搜尋數字或日期值時,請確認 table_array 第一欄中的資料並未儲存為文字值。否則,VLOOKUP 可能會提供錯誤或與預期不符的值。如需詳細資訊,請參閱將儲存成文字的數值轉換成數值。
  3. 如果 range_lookup 為 FALSE 且 lookup_value 為文字,則您需要在 lookup_value 中使用萬用字元、問號 (?) 和星號 (*)。問號可替代任一字元;星號可替代任一系列的字元。如果您確實要尋找實際的問號或星號,請在該字元前鍵入波狀符號 (~)。



HLOOKUP函數 (以下說明來自 Microsoft Excel 說明)
在一陣列 (陣列:用來建立產生多個結果或運算一組以列及欄排列之引數的單一公式。陣列範圍共用一個公式;一個陣列常數是用作一個引數的一組常數。)或表格的第一列中尋找含有某特定值的欄位,再傳回同一欄中某一指定儲存格中的值。如果所有用來比對的數值位於表格的第一列中,而您想要的值是在此比對值列下方的列中,那麼您就必須使用 HLOOKUP 函數;相對的,如果用來比對的數值位於您所要尋找的資料之左邊欄時,則必須使用 VLOOKUP 函數。

H 在 HLOOKUP 中表示 "水平"。

語法

HLOOKUP(lookup_value,table_array,row_index_num,range_lookup)
Lookup_value
在表格第一列中搜尋的值。lookup_value 可以是數值、參照位址或文字串。

Table_array
是要在其中搜尋資料的資料表格。通常此引數是個儲存格範圍的參照位址或範圍名稱。
  1. Table_array 第一列中的值可以是文字、數字或邏輯值。
  2. 如果 range_lookup 為 TRUE,則 table_array 第一列中的數值必須按照遞增次序排列:...-2,-1,0,1,2,...,A-Z,FALSE,TRUE;否則 HLOOKUP 函數找出的值不一定正確。如果 range_lookup 為 FALSE,table_array 就不須排序。
  3. 字母的大小寫被視為是相同的。
  4. 要將值按遞增的次序排列:請先選取要排序的數值,按一下 [資料] 功能表上的 [排序] 指令,按一下 [選項],按 [循列排序] 然後再按 [確定];在 [主要鍵] 之下,按一下清單中的列,再按 [遞增]。
Row_index_num
是個數字,代表所要傳回的值位於 table_array 列中的第幾列。如果 row_index_num 引數值為 1,傳回 table_array 裡第一列的值,如果 row_index_num 引數值為 2,傳回 table_array 裡第二列的值,依此類推。如果 row_index_num 小於 1,則 HLOOKUP 函數傳回錯誤值 #VALUE!;如果 row_index_num 超過 table_array 的總列數,則 HLOOKUP 函數傳回錯誤值 #REF!。

Range_lookup
是個邏輯值,用來指定 HLOOKUP 要尋找完全符合或部分符合的值。當此引數值為 TRUE 或被省略了,會傳回部分符合的值;也就是找不到完全符合的值時,會傳回僅次於 lookup_value 的值。當此引數值為 FALSE 時,HLOOKUP 只會尋找完全符合的值,如果找不到,則傳回錯誤值 #N/A。

註解
  1. 如果 HLOOKUP 函數找不到 lookup_value,且 range_lookup 為 TRUE 時,則使用僅次於 lookup_value 的值。
  2. 如果 lookup_value 比 table_array 第一列中的最小值還小,則 HLOOKUP 傳回錯誤值 #N/A。



範例

表格陣列範例:中鋼2002財務比率年表


函數查詢範例


範例下載Hinet免費空間不支援續傳軟體(例:FlashGet)
創作者介紹

tivo168_的投資理財_Excel_應用教學

tivo168 發表在 痞客邦 PIXNET 留言(18) 人氣()


留言列表 (18)

禁止留言
  • shipper000
  • 耶~~~

    謝謝tivo大的分享~~

    .^_^.
  • 不客氣...

    tivo168 於 2008/11/24 08:11 回覆

  • liaochinchun
  • 謝謝Tivo大大的不吝分享~感激!
  • lojenchen
  • VLOOKUP於之前做文書時常常在用,也是一個複習
  • ycl0508
  • 感謝不吝分享~
  • bkchu
  • 感謝tivo168大大的教學
  • nbs3695
  • 大大您好~可否請教~我現在要用的跟vlookup很像,只是vlookup只能回傳一個數值,如果要它回傳多個數值,您
    建議用哪個函數較好呢?謝謝賜教
  • vlookup「一次」只能回傳一個數值,如果需要傳多個不同欄位的值,就多用幾次vlookup即可。

    tivo168 於 2009/02/05 18:43 回覆

  • 悄悄話
  • ycl0508
  • 請問~

    要將相同的產業類別的營收相加(例如:水泥類的台泥、亞泥...),除了用SUM 以外,

    能用VLOOKUP來加總嗎?
  • tivo168
  • 資料→小計
  • ycl0508
  • 請問~

    資料→小計 後,再用 VLOOKUP

    為什麼都是出錯誤訊息?#N/A

    是否接下來只能用其他函數?而不能用 VLOOKUP ?

    謝謝~
  • jackalwellte
  • 請問使用vlookup,第一個Lookup_value,只能是一個值嗎? 不能是多項條件嗎?
    例: 廠商一週回覆一次交貨日,A表為上週的,B表為本週的。A表中有:單號/料號/數
    量/交貨日、B表亦同。欲將[單號/料號/數量]皆設為條件,以利帶出AB兩表的交貨日
    好進行比對,該如何設立vlookup的公式? 或是有別的函數可利用? 感謝您
  • fundant
  • 類別加總 SUM應該是比較方便
  • mesureli
  • 大師你好,想請教,一個欄位裡,有多位作者,張xx;李xx;王xx , 如果我要統計這個欄
    位裡有多少位作者, 請問語法如何寫? 謝謝您的回覆
  • STEP1 資料 → 篩選 → 進階篩選
    STEP2 點選「將篩選結果複製到其他地方」
    STEP3 選取資料範圍 (作者那一欄)
    STEP4 勾選「不選重複記錄」
    STEP5 選取複製到的位置
    STEP6 確定

    tivo168 於 2010/06/17 16:57 回覆

  • a0926205499
  • 老師您好: 工作上碰到多筆資料問題,用 vlookup函數比對出來不正確,請幫我看是否有問題,感謝您^^ 還是有其他比對的方法?感恩!! 因為要比對資料是否錯誤,第一欄資料應該要
    完全跟第二欄一樣,但有時會難免會有錯誤,因此用校正方式來確認,正確像第二列不一樣就顯示N/A,第四列兩欄值相同顯示該值,用紅框框起來部分,不知道為什麼不正確,請老師幫我
    看看,感謝您! http://webhd.xuite.net/_oops/a0926205499/t4j
  • 比對A,B兩欄是否一樣,不需也不能使用VLOOKUP,只要在C1: 輸入公式 =IF(B1=A1,B1, NA()) ,然後拖曳填滿到最後一列即可。

    tivo168 於 2012/01/02 22:41 回覆

  • a0926205499
  • 感謝老師,這是我要的答案沒錯,其實IF函數我會用,只是不曉得同事為什麼要這麼複雜,因為他教我的方式是VLOOKUP函數,所以我只是想把該函數搞懂如何使用,不知道我問題出在
    哪??有沒有VLOOKUP函數範例可以學習?謝謝老師!我有找到EXACT函數也可以比對資料,而且比較簡單,在經過篩選後就知道錯誤的有哪些~
  • 1.你同事故意考你的 Excel功力
    2.他搞不清楚 VLOOKUP 是幹甚麼用的
    3.的確有很多種方法都可以做,但就目的而言,越簡單越好。
    4.VLOOKUP是查表(資料表/二維陣列)函數,且其為易失性函數,工作表有任何變動,就會重新查詢一次,資料數量多時會增加很多計算時間。

    tivo168 於 2012/01/03 13:30 回覆

  • a0926205499
  • VLOOKUP單一條件也可以成功:
    1 A B C
    2 G E #N/A = VLOOKUP(B2,A2,1,0)
    3 F B #N/A = VLOOKUP(B3,A3,1,0)
    4 E G #N/A = VLOOKUP(B4,A4,1,0)
    5 E E E = VLOOKUP(B5,A5,1,0)
  • 你查的資料表示1x1,當然也可以查,請參考15F的答覆4

    tivo168 於 2012/01/03 13:31 回覆

  • yannfarn
  • To 樓上同學,
    就邏輯上來說,比對,只有兩種結果:錯或對,若以布林值為回傳值,應
    當只有False或True。但是VLookup是一種搜尋函式,回傳#N/A,那是
    Excel定義的一種錯誤值,根據狀況不同,還會回傳#DIV/0!、#VALUE!等
    等其它錯誤值,請不要誤以為VLookup在搜尋不到時只會回傳#N/A,那會
    讓你的應用在某種情況下產生不可預期的錯誤。或許這樣的用法目前還可
    以達成你的需求,但它其實並不是實際上的用法,也會讓你的學習朝錯誤
    的方向走。
  • tivo168 於 2012/01/03 13:25 回覆

找更多相關文章與討論