在 Excel 中,lookup函數有兩種形式,一種為向量形式,另一種為數組形式;其中向量形有三個參數,數組形式有兩個參數,即數組形式省略了返回結果域。無論是向量形式還是數組形式,查找區域必須按升序排序,否則可能返回錯誤的結果;另外,當找不到值時,它們都返回小於或等於查找值的最大值。以下是就 Excel lookup函數的使用方法,列舉了向量形式和數組形式兩種實例,並且分享了 lookup 與 vlookup 的區別,實例中操作所用版本均為 Excel 2016。
一、lookup函數向量形式使用方法
lookup函數向量形式是在一行或一列中查找值,返回另一行或另一列對應位置的值。
(一)lookup函數向量形式的語法規則
表達式為:=LOOKUP(lookup_value, lookup_vector, [result_vector])
中文表達為:=LOOKUP(查找值,查找區域,返回結果區域)
(二)表達式說明
1、lookup_value 為查找值,是必選項;可以是對單元格的引用、數字、文本、名稱或邏輯值。
2、lookup_vector 為查找區域,是必選項;只能是一行或一列;查找區域的值必須按升序排列,否則可能返回錯誤的結果;可以是對單元格引用、數字、文本、名稱或邏輯值,文本不區分大小寫。
3、[result_vector] 為返回結果區域,是可選項(即可填可不填);只能是一行或一列,且與查找區域大小要相同;如果返回結果區域為一個單元格(如 A2 或 A2:A2),則默認為行(即橫向),相當於 A2:B2。
注意:
A、如果找不到查找值,lookup函數會返回小於或等於查找值的最大值。
B、如果查找值小於查找區域的最小值,lookup函數會返回 #N/A 錯誤。
(三)lookup函數的使用方法舉例與查找原理說明
實例一:從服裝銷量表中查找價格為39元的服裝
1、框選 E2:E10,選擇“數據”選項卡,單擊“升序”排序圖標,彈出“排序提醒”窗口,選擇“擴展選定區域”,單擊“確定”,把“價格”列按升序排列;把公式 =LOOKUP(A13,E2:E10,B2:B10) 復制到 B13 單元格,按回車,則返回“白色T恤”,操作過程步驟,如圖1所示:

2、公式說明
公式中 A13 為查找值,E2:E10 為查找區域,B2:B10 為返回結果區域,查找區域與返回結果區域都為列,並且查找區域按升序排列。
3、查找原理說明
A、lookup函數用折半查找(即二分查找)來搜索要找的值。折半查找的算法為:每次用查找區域的數值的個數除以2,取得中間值的下標,根據下標取出中間值與要查找值比較;如果查找值等於中間值,則找到返回;如果查找值小於中間值,則在中間值前面繼續折半查找;如果查找值大於中間值,則在中間值后面繼續折半查找;一直到找完所有數值。
B、如果查找區域的數值是奇數個,則折半后恰是中間哪個值;如果查找區域的數值是偶數個,折半后有兩個中間值,則取左邊(或上邊)哪個與查找值比較。
C、由於查找區域的值按升序排列,因此,每次折半總能把查找值分到它可能在的一邊;如果在沒有按升序排序的區域中查找,則無法確保把查找值分到它可能在的一邊,從而導致找到錯誤的結果。
D、如果查找過程中遇到錯誤值或空,則會忽略繼續折半查找。若找不到查找值,則會返回小於或等於查找值的最大值。
E、實例中“價格列”共有9個值,即 35、35、36、38、39、49、85、86、98,第一次折半后恰好是要查找的值 39,因此第一次就找到。如果要找 86,第一次也找到 39;由於 86 大於 39,因此在后半段 39、49、85、86、98 中繼續折半查找,第二次找到85;由於 86 大於 85,因此第三次在 85、86、98 中繼續折半查找,折半后恰好找到 86。
實例二:查找近似值(找查找區域中沒有的值)
1、假如要查找價格為 50 元的服裝。把公式 =LOOKUP(A13,E2:E10,B2:B10) 復制到 B13 單元格,如圖2所示:

2、按回車,則返回“黑色T恤”,如圖3所示:

3、服裝銷量表中並沒有價格為 50 元的服裝,返回的“黑色T恤”價格為 49 元,這正驗證了如果找不到查找值,返回小於或等於查找值(50)的最大值。
實例三:查找比查找區域中最小還小的值
1、假如要查找價格為 24 元的服裝。同樣把公式 =LOOKUP(A13,E2:E10,B2:B10) 復制到 B13 單元格,如圖4所示:

2、按回車,則返回 #N/A 錯誤,如圖5所示:

3、服裝銷量表中價格最低的為 35 元,而現在要找價格為 24 元的服裝,24 小於 35,因此返回 #N/A 錯語;這驗證了查找值小於查找區域的最小值時將返回 #N/A 錯誤。
二、lookup函數數組形式使用方法
lookup函數的數組形式是在數組的第一行或第一列查找指定值,並返回數組最后一行或最后一列中對應位置的值。
(一)lookup函數數組形式的語法規則
表達式為:=LOOKUP(lookup_value, array)
中文表達為:=LOOKUP(查找值,數組)
(二)表達式說明
1、lookup_value 為在數組中的查找值,是必選項;可以是對單元格的引用、數字、文本、名稱或邏輯值。
2、array 為數組,是必選項;它是行和列中值的集合;數組的值必須按升序排列,否則會返回錯誤的結果;可以是對單元格的引用、數字、文本、名稱或邏輯值,文本不區分大小寫。
3、注意
A、如果找不到查找值,與向量形式一樣會返回小於或等於查找值的最大值。
B、如果查找值小於第一行或第一列的最小值,lookup函數會返回 #N/A 錯誤。
C、如果數組的列數大於行數,則lookup函數會在第一行中查找要找的值。如果數組的行數大於列數,則lookup函數會在第一列中查找要找的值。
D、lookup函數總是返回行或列中最后一個值。
(三)向量形式lookup函數的使用方法舉例
實例一:
1、假如要在服裝銷量表的 A2:E10 這片區域查找編號為 WS-581 的服裝。框選 A2:A10,選擇“數據”選項卡,單擊“升序”圖標,則把所有服裝按升序排列;在 A13 單元格中輸入 WS-581,繼續在 B13 單元格輸入公式 = LOOKUP(A13,A2:E10),按回車,則返回 38,這正是編號為 WS-581 服裝的價格;操作過程步驟,如圖6所示:

2、公式說明
公式中 A13 為查找值,A2:E10 為數組,共由五列組成,查找前必須對它們按升序排序,否則可能返回錯誤的結果。
實例二:近似查找
1、假如要在服裝銷量表中查找編號為 S-39 的服裝。在 A13 單元格輸入編號 S-39,然后在 B13 單元格輸入公式 =LOOKUP(A13,A2:E10),按回車,則返回 98;操作過程步驟,如圖7所示:

提示:查找前同樣需要對編號進行升序排序,由於前面已經排好序,因此這里省略了排序操作。
2、為什么會返回98?從26個字母排序可知,S 在 N 與 W 之間,當找不到要找的編號時,返回小於或等於要找值的最大值,而小於編號 S-39 的編號共有三個,分別為 NS-281、NS-286 和 NS-832,而 NS-832 最大,又根據 lookup函數總是返回行或列中最后一個值,因此返回 98。
三、lookup函數與vlookup函數的區別
lookup函數相當於vlookup函數的近似匹配;lookup主要用於查找一行或一列,vlookup即可用於查找一行一列,也可用於查找多行多列,功能比 lookup 強大得多。