經(jīng)常進(jìn)行函數(shù)查詢(xún)的用戶(hù)對(duì)LOOKUP函數(shù)應(yīng)該不會(huì)陌生,它主要用于在查找范圍中查詢(xún)用戶(hù)指定的查找值,并返回另一個(gè)范圍中對(duì)應(yīng)位置的值。其查詢(xún)?cè)砼cVLOOKUP函數(shù)和HLOOKUP函數(shù)中當(dāng)?shù)?span>4個(gè)參數(shù)為1或TRUE時(shí)非常相似。
LOOKUP函數(shù)目前已經(jīng)被使用得非常廣泛,具體的函數(shù)語(yǔ)法如下:
LOOKUP(lookup_value,lookup_vector,[result_vector])
LOOKUP(lookup_value,array)
為了便于用戶(hù)更加清晰地了解該函數(shù)的用法,現(xiàn)將該函數(shù)的各個(gè)參數(shù)含義介紹如下。
l lookup_value查找值:可以使用單元格引用、常量數(shù)組和內(nèi)存數(shù)值;
l lookup_vector查找范圍和result_vector結(jié)果范圍:同樣支持單元格引用和常量數(shù)組;
l 同時(shí),在第2個(gè)語(yǔ)法中列出的array參數(shù)中,LOOKUP函數(shù)還支持使用二維數(shù)組進(jìn)行查找,函數(shù)返回二維數(shù)組中最后一列(或者一行)的結(jié)果。
注意:中文版Excel 2010中關(guān)于LOOKUP函數(shù)的幫助文檔仍然存在錯(cuò)誤,查找范圍的數(shù)據(jù)并非必須升序排列。
只有當(dāng)需要在查找范圍中查找一個(gè)明確的值的時(shí)候,查找范圍必須升序排列;當(dāng)希望查找一個(gè)不確定的值時(shí),如查找一列數(shù)據(jù)最后一個(gè)值,查找范圍并不需要嚴(yán)格地升序排列。同時(shí),LOOKUP函數(shù)支持忽略空值、邏輯值和錯(cuò)誤值來(lái)進(jìn)行數(shù)據(jù)查詢(xún)。
同時(shí),LOOKUP函數(shù)是Excel查找類(lèi)函數(shù)中位數(shù)不多的在函數(shù)內(nèi)部支持?jǐn)?shù)組運(yùn)算的函數(shù),而且經(jīng)過(guò)內(nèi)部數(shù)組運(yùn)算后,該函數(shù)幾乎可以完成所有VLOOKUP函數(shù)和HLOOKUP函數(shù)的查找任務(wù),目前已經(jīng)被廣大Excel函數(shù)愛(ài)好者們廣泛使用。
提示:深入理解LOOKUP函數(shù)的查找原理
LOOKUP函數(shù)以其高效率的運(yùn)算速度逐漸被Excel函數(shù)公式愛(ài)好者們所喜愛(ài),在Excel Home技術(shù)論壇上,LOOKUP函數(shù)已經(jīng)被很多用戶(hù)運(yùn)用到大量的實(shí)際工作 中,特別在數(shù)組公式、內(nèi)存數(shù)組應(yīng)用中被更加廣泛地運(yùn)用。
經(jīng)過(guò)大量的數(shù)據(jù)分析表明,LOOKUP函數(shù)采用“二分法”的原理進(jìn)行數(shù)據(jù)查找,因此運(yùn)算速度肯定高于使用“遍歷法”的函數(shù)查找。
“二分法”查找原理解釋如下:
1. 數(shù)據(jù)升序排列(默認(rèn));
2. 在由N個(gè)數(shù)據(jù)組成區(qū)間(1~N)查找某值X。
假設(shè)查找范圍中有100個(gè)數(shù)據(jù),LOOKUP函數(shù)首先比較中間值(第INT(1+100)/2=50個(gè)數(shù)據(jù))與X的大小,如果該值比要查找的X小,那么由于數(shù)據(jù)是升序的,則收斂搜索區(qū)域?yàn)椤坝覅^(qū)間”即第51個(gè)~第100個(gè)。反之則在“左區(qū)間”查找,進(jìn)入次級(jí)區(qū)間后,將再度使用剛才的方法進(jìn)行對(duì)比查找。如果中間值剛好=X,則在右區(qū)間中繼續(xù)查找,知道返回最后一個(gè)等于X的位置為止。
另外,與“二分法”不同的另外查找數(shù)據(jù)方法:“遍歷法”-顧名思義,對(duì)所有數(shù)據(jù)都要從頭到尾“掃描一遍”。
同時(shí),針對(duì)其查找原理進(jìn)行推算得出近似的運(yùn)算速度比較結(jié)果如下。
假設(shè)遍歷法=N,二分法=POUNDUP(LOG(N,2),)。
即對(duì)LOOKUP函數(shù)對(duì)數(shù)據(jù)查找范圍反復(fù)使用逐層減半地縮小搜索 范圍,從而達(dá)到加快查找速度的目的。
一、使用LOOKUP進(jìn)行查詢(xún)
示例1:從成績(jī)明細(xì)表中查詢(xún)學(xué)員總成績(jī)。
如圖1所示,展示了某年級(jí)學(xué)員的某次月末考試成績(jī)表,下面使用LOOKUP函數(shù)來(lái)實(shí)現(xiàn)查詢(xún)學(xué)員的總成績(jī)。
注:為了加快查詢(xún)速度,學(xué)員姓名已經(jīng)按升序排列。
假設(shè)F12單元格為選擇的學(xué)員姓名:孫佩,F13單元格公式為:
=LOOKUP($F$12,$B$3:$B$10,$I$3:$I$10)(公式1)
或:
=LOOKUP($F$12,$B$3:$I$10)(公式2)
公式1中使用了LOOKUP函數(shù)的標(biāo)準(zhǔn)用法,分別針對(duì)B列姓名進(jìn)行升序查找,并在I列中返回學(xué)員總分結(jié)果。
而公式2主要利用LOOKUP函數(shù)在二維區(qū)域中的查找原理,函數(shù)在B3:I10的區(qū)域中最左列進(jìn)行姓名查找,并返回二維區(qū)域中最后一列的總成績(jī)。
利用這個(gè)技巧的優(yōu)勢(shì)在于,用戶(hù)無(wú)無(wú)須像VLOOKUP函數(shù)必須指定返回值的列數(shù),公式更為簡(jiǎn)單。
二、代替VLOOKUP函數(shù)查找
通過(guò)上節(jié)中對(duì)LOOKUP函數(shù)的介紹,用戶(hù)已了解LOOKUP函數(shù)可以在很多時(shí)候代替VLOOKUP函數(shù)來(lái)進(jìn)行升序查找。如果數(shù)據(jù)在無(wú)序狀態(tài)下,LOOKUP函數(shù)同樣可以利用其內(nèi)部數(shù)組運(yùn)算的原理來(lái)實(shí)現(xiàn)無(wú)序查詢(xún)。
示例2:利用LOOKUP函數(shù)實(shí)現(xiàn)無(wú)序查詢(xún)。
如圖2所示,展示了一份員工信息表,希望在B3單元格通過(guò)B2的姓名查詢(xún)其部門(mén)歸屬,從圖中明顯看到結(jié)果返回錯(cuò)誤。在下面的示例中,將利用LOOKUP函數(shù)來(lái)實(shí)現(xiàn)姓名數(shù)據(jù)的無(wú)序查詢(xún)。
在原B3公式中,由于信息表中E列姓名未按升序排列,因此公式返回錯(cuò)誤結(jié)果。如果這時(shí)使用LOOKUP函數(shù),B6單元格的公式修改如下:
=LOOKUP(1,0/(E:E=$B$5),F:F)
公式主要使用了查找姓名在信息表中有效的姓名范圍中進(jìn)行比較判斷,如(E:E=B5)比較結(jié)果為:{FALSE; FALSE; FALSE; FALSE; TRUE;FALSE; FALSE}
再利用0除以這個(gè)內(nèi)存數(shù)組,結(jié)果為:{#DIV/0!; #DIV/0!; #DIV/0!; #DIV/0!; #DIV/0!; #DIV/0!; #DIV/0!; #DIV/0!},最后在這個(gè)數(shù)組中查找數(shù)值1,返回小于等于1的最大值位置,即前面結(jié)果中0的位置(位置6),返回對(duì)應(yīng)的部門(mén)名稱(chēng):項(xiàng)目管理部。
此算法是LOOKUP函數(shù)在無(wú)序查找中的典型用法,由于函數(shù)本身支持?jǐn)?shù)組內(nèi)部運(yùn)算,因此該公式無(wú)須使用數(shù)組公式組合鍵進(jìn)行輸入,目前已經(jīng)被很多用戶(hù)廣泛使用。
提示:在Excel2010中,已經(jīng)支持用戶(hù)選擇整列數(shù)據(jù)(如:E:E=$B$5)進(jìn)行數(shù)據(jù)比較操作,Excel會(huì)自動(dòng)選擇有效數(shù)據(jù)區(qū)域進(jìn)行處理,而不會(huì)像Excel2003返回#NUM!錯(cuò)誤結(jié)果。
聯(lián)系客服