


摘要:在使用Excel時查詢是經常要用到的操作,與VLookup相比Lookup函數有很強大的查詢功能。文章在介紹Lookup的常規用法的基礎上通過實例詳細介紹了“0/”的用法,以實現多種查詢。
關鍵詞:函數;Lookup;0/
中圖分類號:TP391
文獻標識碼:A
文章編號:1009-3044(2019)34-0208-02
查找引用是Excel的基本功能之一,通常我們可以使用Vlookup來進行按列查找數據(或者用Hlookup按行查找)。Vlookup函數雖然強大,但是卻不是效率最高的,其實還有一個與Vlookup相似的Lookup函數,以高效的運算速度被Excel函數愛好者所喜歡,而且Lookup函數在日常實際工作中特別是數組公式,內存數組中應用廣泛。
1 Lookup函數的基本格式
1.1 Lookup函數的含義
把數(或者文本)與一行或一列的數據依次進行匹配,匹配成功后把對應的數值找出來。Lookup函數有向量型查找和數組型查找兩種格式。
1.2 Lookup函數的語法格式
向量型查找:Lookup(lookup_value,lookup_vector。[result_vec-tor])
其中各參數的含義如下:
1) lookup_value為查找值,是必選項;可以是對單元格的引用、數字、文本、名稱或邏輯值。
2) lookup_vector為查找區域,是必選項;只能是一行或一列;查找區域的值必須按升序排列,否則可能返回錯誤的結果;可以是對單元格引用、數字、文本、名稱或邏輯值,文本不區分大小寫。
3) [result_vector]為返回結果區域,是可選項(即可填可不填);只能是一行或一列,且與查找區域大小要相同;如果返回結果區域為一個單元格(如A2或A2:A2),則默認為行(即橫向),相當于A2:B2。
數組型查找:Lookup(lookup_value,array)
其中各參數的含義如下:
1) lookup_value為在數組中的查找值,是必選項;可以是對單元格的引用、數字、文本、名稱或邏輯值。
2) array為數組,是必選項;它是行和列中值的集合;數組的值必須按升序排列,否則會返回錯誤的結果;可以是對單元格的引用、數字、文本、名稱或邏輯值,文本不區分大小寫。
需要注意的是無論是向量形式還是數組形式,查找區域必須按升序排序,否則可能返回錯誤的結果;另外,當找不到值時,它們都返回小于或等于查找值的最大值。如果查找值小于查找區域的最小值(數組查找時查找值小于第一行或第一列的最小值),Lookup函數會返回值#N/A。
2 Lookup函數的常規使用
如圖1所示,根據學號查找對應的數學成績。向量型查找,在H2單元格中輸入如下內容:“=LOOKUP(G2,A2:A11,E2:E11)”。其中G2是查找的值,也就是第一個學生的學號,A2:A1l是查找的范圍,E2:E1I返回值的范圍。
數組型查找,在H2單元格中輸入:“=LOOKUP(G2,A2:E11)”。其中G2是查找的值,A2:E11是數組。
3 Lookup函數o,的用法
Lookup函數功能很強大,除了上面的基本用法外還有很多其他用法,比如逆向查找,多條件查找,區間查找,最后一個符合條件的查找等等。
例如,根據姓名和專業查找數學成績。如圖2所示,這是一個多條件查找。在12單元格中輸入:“=Lookup(l,O/(B2:B11=G2)*(D2:D1I=H2),E2:EII)”,最后的查詢結果為85。
那么在這個函數中為什么要用“0/”結構呢?其實這個結構廣泛存在于Lookup公式中。首先我們看看(B2:B1I=G2)*(D2:D11=H2)運算后的結果是什么?我們都知道,在Excel公式中如果A和B的值相等,則“A=B”會返回結果為True,而True在參與算術運算時相當于是1。如果A和B的值相不等,則“A=B”會返回結果為False,而False在參與算術運算時相當于是0。所以(B2:B11=G2)的結果是由True和False構成的一組值,如果放在單元格中則就像圖3中的G5:C14區域所示。同樣,(D2:D11=H2)的結果也是由True和False構成的一組值,而兩個相同個數的一組值相乘,True*True=l,True*False=0.False *False=0.最終的結果是由1和0組成的一組數,如圖3中的15:114區域所示。
由圖3可以看出相乘結果為1所在的行,正是符合兩個查找條件的行,我們只要把這個l的位置找出來也就能得到其所對應的數學成績了。Lookup函數是按二分法進行查找的,但是要能正確查找到這組值必須按升序排列的,而公式(B2:BIl=G2)*(D2:D11=H2)的結果并不是按升序排列的,不符合要求。于是有人想到用“0/”的方法。0/1的結果是0,而0/0的結果是個錯誤值“#DIV/O!”,所以我們將上面相乘結果的一組數除0,最后得到如單元格區域J5:J14所示的結果。Lookup函數還有一個關鍵特征,那就是查找時可以忽略錯誤值,這樣一組數值忽略后只剩一個值,這時只需要使用任意一個大于等于0的值查找就可以了,本例中大于等于0的數是1,即“=Lookup(l,0/(B2:B11=G2)*(D2:DIl=H2),E2:ElI)”,所以“0/”的目的是將符合條件的變成0,其他的變成錯誤值“#DIV/O!”,利用Lookup函數查找時忽略錯誤值的特征找到符合條件的值。
根據以上原理我們可以知道,如果查找的條件不止兩個而是多個,那么同樣可以用這種方法,函數可以寫成:=Lookup(l,0/《條件區域1=條件1)*(條件區域2=條件2)……*(條件區域n=條件n)),查詢區域)。
4 結束語
相比于Vlookup函數Lookup函數具有很強大的功能。通過0,將查找范圍變換為一組0和錯誤值,再利用函數在查找時可以忽略錯誤值的特征找到查詢值,利用這種方法Lookup函數可以完成很多查詢,比如,逆向查詢、單條件和多條件查詢,查詢最后一次出現的數據等。
參考文獻:
[1] ExceIHome.Excel函數與公式實戰技巧精粹[M].北京:人民郵電出版社,2010.
[2]賽貝爾資訊.Excel函數應用500例[M].北京:清華大學出版社,2017.
【通聯編輯:唐一東】
收稿日期:2019-08-15
作者簡介:周威(1963-),男,江蘇無錫人,本科,副教授,研究方向為計算機應用及教學。