1. 程式人生 > >Excel當中LookUp與VLookUp函式詳解

Excel當中LookUp與VLookUp函式詳解

LOOKUP 函式可返回一行或一列區域中或者陣列中的某個值。LOOKUP 函式具有兩種語法形式:向量和陣列。向量形式的 LOOKUP 在一行或一列區域(稱為向量)中查詢值,然後返回另一行或一列區域中相同位置處的值。陣列形式的 LOOKUP 在陣列的第一行或列中查詢指定值,然後返回該陣列的最後一行或列中相同位置處的值。

步驟/方法

  1. 向量形式的 LOOKUP
    向量形式的 LOOKUP 在一行或一列區域(稱為向量)中查詢值,然後返回另一行或一列區域中相同位置處的值。如果要指定其中包含要匹配的值的區域,請使用這種形式的 LOOKUP 函式。
    向量形式的語法
    1.LOOKUP(lookup_value,lookup_vector,result_vector)
       Lookup_value 是 LOOKUP 在第一個向量中搜索到的值。Lookup_value 可以是數字、文字、邏輯值,也可以是代表某個值的名稱或引用。
       Lookup_vector 是一個僅包含一行或一列的區域。lookup_vector 中的值可以是文字、數字或邏輯值。
    2.重要說明:lookup_vector 中的值必須按升序順序排列。例如,-2、-1、0、1、2 或 A-Z 或 FALSE、TRUE。否則,LOOKUP 返回的值可能不正確。大寫和小寫文字是等效的。
    Result_vector 是一個僅包含一行或一列的區域。它的大小必須與 lookup_vector 相同。
    3.注意
         示例
    頻率 顏色
    4.14 red
    4.19 orange
    5.17 yellow
    5.77 green
    6.39 blue
    =LOOKUP(4.19,A2:A6,B2:B6) 顯示結果為orange (在A列中查詢4.19.返回B列的同一行的值)

 如果 LOOKUP 找不到 lookup_value,它會匹配 lookup_vector 中小於或等於 lookup_value 的最大值。

            =LOOKUP(5.0,A2:A6,B2:B6) 顯示結果為orange (在A列中查詢5.0.返回B列的同一行的值)

             如果 lookup_value 小於 lookup_vector 中的最小值,則 LOOKUP 會返回 #N/A 錯誤值。
            =LOOKUP(4.0,A2:A6,B2:B6) 顯示結果為#N/A (在A列中查詢4.0.返回錯誤值)

  1. 陣列形式的 LOOKUP
    陣列形式的 LOOKUP 在陣列的第一行或列中查詢指定值,然後返回該陣列的最後一行或列中相同位置處的值。如果要匹配的值位於陣列的第一行或列中,請使用這種形式的 LOOKUP。
    陣列形式的語法
    LOOKUP(lookup_value,array)
    Lookup_value 是 LOOKUP 在陣列中搜索到的值。Lookup_value 可以是數字、文字、邏輯值,也可以是代表某個值的名稱或引用。
    如果 LOOKUP 找不到 lookup_value,它會使用該陣列中小於或等於 lookup_value 的最大值。
    如果 lookup_value 小於第一行或列(取決於陣列維度)中的最小值,則 LOOKUP 會返回 #N/A 錯誤值。
    Array 是一個單元格區域,其中包含要與 lookup_value 進行比較的文字、數字或邏輯值。
    陣列形式的 LOOKUP 與 HLOOKUP 函式和 VLOOKUP 函式相似。其區別是 HLOOKUP 在第一行中搜索 lookup_value,VLOOKUP 在第一列中進行搜尋,而 LOOKUP 根據陣列的維度進行搜尋。
    如果 array 所覆蓋區域的寬度大於高度(列多於行),則 LOOKUP 會在第一行中搜索 lookup_value。
    如果 array 所覆蓋的區域是正方形或者高度大於寬度(行多於列),則 LOOKUP 會在第一列中進行搜尋。
    使用 HLOOKUP 和 VLOOKUP 時,可以向下索引或交叉索引,但 LOOKUP 始終會選擇行或列中的最後一個值。
    重要說明:array 中的值必須按升序順序排列。例如,-2、-1、0、1、2 或 A-Z 或 FALSE、TRUE。否則,LOOKUP 返回的值可能不正確。大寫和小寫文字是等效的。
    示例
    頻率 顏色
    a 1
    b 2
    c 3
    d 4
    e 5
    f 6

             =lookUp('c',A1:B6)返回值為3,在陣列當中查詢c,返回最後一列同一行的值(3)

             =lookUp('bmp',A1:B6)返回值為2,在陣列當中查詢c,返回最後一列同一行的值(2)

vlookup函式應用例項一:
  問題:如下圖,已知表sheet1中的資料如下,如何在資料表二 sheet2 中如下引用:當學號隨機出現的時候,如何在B列顯示其對應的物理成績?

           vlookup函式應用例項
 
  根據問題的需求,這個公式應該是:=vlookup(a2,sheet1!$a$2:$f$100,6,true)
詳細說明一下在此vlookup函式例子中各個引數的使用說明:
  第一,vlookup是垂直方向的判斷,如果是水平方向的判斷可使用Hlookup函式
  第二,a2 是判斷的條件,也就是說如果sheet2表中a列對應的資料和sheet1表中的資料相同方能引用;
  第三,sheet1!$a$2:$f$100 是資料跟蹤的區域,因為需要引用的資料在f列,所以跟蹤的區域至少在f列,$是絕對引用。
  第四,6 這是返回什麼數的列數,如上圖的物理是第6列,所以應該是6,如果要求英語的數值,那麼此處應該是5。
  第五,是否絕對引用,如果是就輸入 true 如果是近似即可滿足條件,那麼輸入false (近似值主要用於帶小數點的財務、運算等)。
  結果如下圖:

          vlookup函式應用例項

  vlookup函式例項講解二:說明函式=VLOOKUP(f1,A1:E100,2,FALSE)的意思。
  意思是:在A1:E100區域查詢f1的值,找到後,返回從a開始算的第2列值(即b列),false為精確查詢的必備引數。

  vlookup函式例項講解三:

          vlookup函式應用例項
 
  上圖,A2:B5為參照陣列範圍,E2為欲搜尋的值,傳回陣列表的欲對照的欄為第2欄(姓名),在F2輸入=VLOOKUP(E2,A2:B5,2,FALSE)將會找到155003是王小華,然後顯示出來。

  vlookup函式例項講解四:
 
  A   B    C   D
1 編號  姓名  工資  科室
2 2005001 張三 2870 辦公室
3 2005002 李四 2750 人事科
4 2005006 鄭化 2680 供應科
5 2005010 屠剛紅 2980 銷售科
6 2005019 王五 2530 財務科
7 2005036 孟小庭 2200 工 會

A列已排序(第四個引數預設或用TRUE)
VLOOKUP(2005001,A1:D7,2,TRUE) 等於“張三”
VLOOKUP(2005001,A1:D7,3,TRUE) 等於“2870”
VLOOKUP(2005001,A1:D7,4,TRUE) 等於“辦公室”
VLOOKUP(2005019,A1:D7,2,TRUE) 等於“王五”
VLOOKUP(2005036,A1:D7,3,TRUE) 等於“2200”
VLOOKUP(2005036,A1:D7,4,TRUE) 等於“工 會”
VLOOKUP(2005036,A1:D7,4) 等於“工 會”

若A列沒有排序,要得出正確的結果,第四個引數必須用FALAE。

  解釋:關於TRUE和FALSE的應用
  先舉個例子,假如讓你在數萬條記錄的表格中查詢給定編號的某個人,假如編號已按由小到大的順序排序,你會很輕鬆地找到這個人;假如編號沒有排序,你只好從上到下一條一條地查詢,很費事。 用VLOOKUP查詢資料也是這樣,當第一列已排序,第四個引數用TRUE(或確省),Excel會很輕鬆地找到資料,效率較高。當第一列沒有排序,第四個引數用FALSE,Excel會從上到下一條一條地查詢,效率較低。 個人覺得,若要精確查詢資料,由於計算機運算速度很快,可省略排序操作,直接用第四個引數用FALSE即可。

  
vlookup函式例項講解五:
  本示例搜尋員工表的 ID 列並查詢其他列中的匹配值,計算並測試錯誤條件。
A   B C   D   E
ID 姓氏 名字 職務 出生日期
1 李 小明 銷售代表 12/8/1968
2 林 彩瑜 銷售部副總 2/19/1952
3 王 志東 銷售代表 8/30/1963
4 潘 金 銷售代表 9/19/1958
5 林 丹 銷售經理 3/4/1955
6 蘇 術平 銷售代表 7/2/1963
公式 說明(結果)
  =IF(ISNA(VLOOKUP(5,A2:E7,2,FALSE)) = TRUE, "未找到員工", VLOOKUP(5,A2:E7,2,FALSE)) 如果有 ID 為 5 的員工,則顯示該員工的姓氏;否則,顯示訊息“未找到員工”。(林)
  當 VLOOKUP 函式返回錯誤值 #NA 時,ISNA 函式返回值 TRUE。
  =IF(ISNA(VLOOKUP(15,A3:E8,2,FALSE)) = TRUE, "未找到員工", VLOOKUP(15,A3:E8,2,FALSE)) 如果有 ID 為 15 的員工,則顯示該員工的姓氏;否則,顯示訊息“未找到員工”。(未找到員工)
  當 VLOOKUP 函式返回錯誤值 #NA 時,ISNA 函式返回值 TRUE。
  
=VLOOKUP(4,A2:E7,2,FALSE) & " " & VLOOKUP(4,A2:E7,3,FALSE) & "是" & VLOOKUP(4,A2:E7,4,FALSE) & "。" 對於 ID 為 4 的員工,將三個單元格的值連線為一個完整的句子。(潘金是銷售代表。)