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