Excel 函數(shù)學習06-LOOKUP函數(shù)

1 HLOOKUP函數(shù)

與VLOOKUP相對應的有一個LOOKUP函數(shù),還有一個HLOOKUP……什么?

HLOOKUP常年處于隱居狀態(tài),據(jù)說非有緣不得見。VLOOKUP的V是vertical垂直縱向查詢之意,HLOOKUP的H是Horizontal水平橫向之意,其主要作用也就是橫向查詢。

語法結(jié)構(gòu)如下:

=HLOOKUP(找誰?在哪里找?查找的結(jié)果在查找范圍的第幾行?零失誤精確找還是隨便找找?)

HLOOKUP的語法結(jié)構(gòu)和VLOOKUP幾乎一模一樣。只是第3參數(shù)從VLOOKUP查找結(jié)果在查找范圍的第幾列,變成了第幾行……:

舉個栗子。


如上圖所示,需要查詢B8單元格指定姓名(比如“李清照”),在B9單元格指定月份(比如3月)的銷售金額。

B10單元格公式如下:

=HLOOKUP(B8,A1:E5,MATCH(B9,A:A,0),0)

HLOOKUP默認查找范圍的首行為匹配行,從中搜索B8單元格的值首次出現(xiàn)在查找范圍的第幾列,第3參數(shù)是一個MATCH函數(shù),用于計算查找值在查找范圍的第幾行,行列交叉之處,即為目標值。

當然,該例我們也可以使用VLOOKUP函數(shù),公式如下:

=VLOOKUP(B9,A1:E5,MATCH(B8,1:1,0),0)

還可以使用INDEX+MATCH函數(shù),公式如下:

=INDEX(A1:E5,MATCH(B9,A:A,0),MATCH(B8,1:1,0))

提供另外兩種函數(shù)的解法倒不是我想灌水,而是揭露一個問題。我們上面說HLOOKUP常年處于隱居狀態(tài),那是給她留面子,坦率而言,在VLOOKUP和INDEX的夾擊之下,這家伙基本上是英雄無用武之地。

2 認識LOOKUP

話說十年之前,Excel函數(shù)方興未艾,大家對函數(shù)世界的探索還很熱情,LOOKUP是那時公認的超級函數(shù)之一。超級有兩方面的意思,一方面是LOOKUP非常強大,在數(shù)據(jù)查詢的問題上,基本沒有什么是它解決不掉的事;另一方面是這家伙非常復雜,甚至有人根據(jù)它的語法,猜想出該函數(shù)使用了編程上的經(jīng)典算法二分法(不過后來證明這猜想在邏輯上完全不能自洽)。
——這是十年之前。如今十年過去了,再復雜的函數(shù)也都被總結(jié)出簡單的套路了。
LOOKUP函數(shù)的官方語法有兩個——但都沒有太大實用價值。這個函數(shù)已經(jīng)被玩到官方定義的語法成為廢紙、民間的套路成為事實上的語法的地步;所以所謂官方語法看一眼就好。

語法1,向量形式:
=LOOKUP(lookup_value,lookup_vector,result_vector)

語法2,數(shù)組形式:
= LOOKUP(lookup_value,array)

核心法則也就只有兩個:區(qū)間查詢和條件查詢。

3 LOOKUP的區(qū)間查詢

LOOKUP函數(shù)的區(qū)間查詢套路格式如下:

=LOOKUP(查找值,首列升序排列的查找區(qū)域,結(jié)果區(qū)域)

需要說明的是,使用此套路時,查找范圍的首列必須升序排列。

舉個例子。

如下圖所示,需要根據(jù)F:G的評分標準,對A:C數(shù)據(jù)區(qū)域的得分作評級。將查詢區(qū)域劃分為了多個區(qū)間,并升序排列。

C2公式如下:

=LOOKUP(B2,F:F,G:G)

F列是升序排列的查找區(qū)域,G列是其對應的結(jié)果區(qū)域。

……可能需要再次強調(diào)的是,這種區(qū)間查詢方式,要求查找區(qū)域的首列必須升級排列!有朋友可能會說F列沒有升序排列?。縁2單元格的0比F1單元格的"分數(shù)"小。這沒事,LOOKUP聰明的很,你不說他都知道F1是不是標題行。 還記得SUMIF嗎?還是那句話,它們身為長子,不聰明是不行滴。

本例也可以使用以下公式:

=LOOKUP(B2,F:G)

這是因為當查找區(qū)域是多列,同時又省略結(jié)果區(qū)域時,比如上述公式,LOOKUP默認查找區(qū)域的首列(F列)為查找區(qū)域,同時默認其末列(G列)為結(jié)果區(qū)域。

注意,我說的是末列,而不是第2列。

例如,在D2單元格輸入以下公式可以返回H列的評級

=LOOKUP(B2,F:H)

LOOKUP默認首列F列為查找區(qū)域,末列H列為結(jié)果區(qū)域。


4 條件查詢:

LOOKUP的條件查詢套路格式如下:

=LOOKUP(一個比查找范圍內(nèi)所有同類型值都大的值,查找范圍,結(jié)果區(qū)域)

該套路固定返回查找區(qū)域最后一個同類型數(shù)據(jù)所對應的結(jié)果。

比如,查找A列最后出現(xiàn)的文本:

=LOOKUP("座",A:A,A:A)

“座”是文本型數(shù)據(jù)里極大的值,比絕大部分常見的文本值均大,因而該公式返回A列最后出現(xiàn)的文本值。由于該公式的查找區(qū)域和結(jié)果區(qū)域是相同的,也可以寫為以下形式:

=LOOKUP("座",A:A)

當省略結(jié)果區(qū)域時,LOOKUP默認查找區(qū)域即為結(jié)果區(qū)域。

再比如,查找A列最后出現(xiàn)的數(shù)值:

=LOOKUP(9^9,A:A)

9^9是9的9次方,一個極大的數(shù)值,比絕大部分數(shù)值均大,因而該公式返回A列最后一個數(shù)值。



覺得這個套路沒有什么實用價值?

那我們就把這個套路換個形式延伸一下……

如下圖所示,需要查詢D2單元格指定人名的考試成績。


這是一個單條件的查詢問題,LOOKUP公式如下:

=LOOKUP(1,0/(A1:A10=D2),B1:B10)

(A1:A10=D2)部分判斷A1:A10區(qū)域的值是否等于D2,返回由邏輯值TRUE和FALSE組成的內(nèi)存數(shù)組:

{FALSE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}

使用0除以該數(shù)組,0/TRUE結(jié)果為0,0/FALSE結(jié)果為錯誤值#DIV/0!,也就返回一個由0和錯誤值構(gòu)成的內(nèi)存數(shù)組:

{#DIV/0!;0;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!}

LOOKUP自帶天賦忽略錯誤值,而查找值1又比查找范圍內(nèi)所有的0都大,因而該公式可以直接返回最后一個符合條件的值所對應的結(jié)果。

該公式總結(jié)一下,也就成了LOOKUP單條件查詢的經(jīng)典套路:

=LOOKUP(1,0/(條件區(qū)域1=條件值),結(jié)果)

……

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容