1 HLOOKUP函數(shù)
與VLOOKUP相對應(yīng)的有一個(gè)LOOKUP函數(shù)火诸,還有一個(gè)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é)果在查找范圍的第幾列跟伏,變成了第幾行……:
舉個(gè)栗子。
如上圖所示翩瓜,需要查詢B8單元格指定姓名(比如“李清照”)受扳,在B9單元格指定月份(比如3月)的銷售金額。
B10單元格公式如下:
=HLOOKUP(B8,A1:E5,MATCH(B9,A:A,0),0)
HLOOKUP默認(rèn)查找范圍的首行為匹配行奥溺,從中搜索B8單元格的值首次出現(xiàn)在查找范圍的第幾列辞色,第3參數(shù)是一個(gè)MATCH函數(shù),用于計(jì)算查找值在查找范圍的第幾行浮定,行列交叉之處相满,即為目標(biāo)值。
當(dāng)然桦卒,該例我們也可以使用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ù)的解法倒不是我想灌水方灾,而是揭露一個(gè)問題建蹄。我們上面說HLOOKUP常年處于隱居狀態(tài)碌更,那是給她留面子,坦率而言洞慎,在VLOOKUP和INDEX的夾擊之下痛单,這家伙基本上是英雄無用武之地。
2 認(rèn)識LOOKUP
話說十年之前劲腿,Excel函數(shù)方興未艾旭绒,大家對函數(shù)世界的探索還很熱情,LOOKUP是那時(shí)公認(rèn)的超級函數(shù)之一焦人。超級有兩方面的意思挥吵,一方面是LOOKUP非常強(qiáng)大,在數(shù)據(jù)查詢的問題上花椭,基本沒有什么是它解決不掉的事忽匈;另一方面是這家伙非常復(fù)雜,甚至有人根據(jù)它的語法矿辽,猜想出該函數(shù)使用了編程上的經(jīng)典算法二分法(不過后來證明這猜想在邏輯上完全不能自洽)丹允。
——這是十年之前。如今十年過去了嗦锐,再復(fù)雜的函數(shù)也都被總結(jié)出簡單的套路了嫌松。
LOOKUP函數(shù)的官方語法有兩個(gè)——但都沒有太大實(shí)用價(jià)值沪曙。這個(gè)函數(shù)已經(jīng)被玩到官方定義的語法成為廢紙奕污、民間的套路成為事實(shí)上的語法的地步;所以所謂官方語法看一眼就好液走。
語法1碳默,向量形式:
=LOOKUP(lookup_value,lookup_vector,result_vector)
語法2,數(shù)組形式:
= LOOKUP(lookup_value,array)
核心法則也就只有兩個(gè):區(qū)間查詢和條件查詢缘眶。
3 LOOKUP的區(qū)間查詢
LOOKUP函數(shù)的區(qū)間查詢套路格式如下:
=LOOKUP(查找值嘱根,首列升序排列的查找區(qū)域,結(jié)果區(qū)域)
需要說明的是巷懈,使用此套路時(shí)该抒,查找范圍的首列必須升序排列。
舉個(gè)例子顶燕。
如下圖所示凑保,需要根據(jù)F:G的評分標(biāo)準(zhǔn),對A:C數(shù)據(jù)區(qū)域的得分作評級涌攻。將查詢區(qū)域劃分為了多個(gè)區(qū)間欧引,并升序排列。
C2公式如下:
=LOOKUP(B2,F:F,G:G)
F列是升序排列的查找區(qū)域恳谎,G列是其對應(yīng)的結(jié)果區(qū)域芝此。
……可能需要再次強(qiáng)調(diào)的是憋肖,這種區(qū)間查詢方式,要求查找區(qū)域的首列必須升級排列婚苹!有朋友可能會說F列沒有升序排列鞍陡?F2單元格的0比F1單元格的"分?jǐn)?shù)"小膊升。這沒事坐慰,LOOKUP聰明的很,你不說他都知道F1是不是標(biāo)題行用僧。 還記得SUMIF嗎结胀?還是那句話,它們身為長子责循,不聰明是不行滴糟港。
本例也可以使用以下公式:
=LOOKUP(B2,F:G)
這是因?yàn)楫?dāng)查找區(qū)域是多列,同時(shí)又省略結(jié)果區(qū)域時(shí)院仿,比如上述公式秸抚,LOOKUP默認(rèn)查找區(qū)域的首列(F列)為查找區(qū)域,同時(shí)默認(rèn)其末列(G列)為結(jié)果區(qū)域歹垫。
注意剥汤,我說的是末列,而不是第2列排惨。
例如吭敢,在D2單元格輸入以下公式可以返回H列的評級
=LOOKUP(B2,F:H)
LOOKUP默認(rèn)首列F列為查找區(qū)域,末列H列為結(jié)果區(qū)域暮芭。
4 條件查詢:
LOOKUP的條件查詢套路格式如下:
=LOOKUP(一個(gè)比查找范圍內(nèi)所有同類型值都大的值鹿驼,查找范圍,結(jié)果區(qū)域)
該套路固定返回查找區(qū)域最后一個(gè)同類型數(shù)據(jù)所對應(yīng)的結(jié)果辕宏。
比如畜晰,查找A列最后出現(xiàn)的文本:
=LOOKUP("座",A:A,A:A)
“座”是文本型數(shù)據(jù)里極大的值,比絕大部分常見的文本值均大瑞筐,因而該公式返回A列最后出現(xiàn)的文本值凄鼻。由于該公式的查找區(qū)域和結(jié)果區(qū)域是相同的,也可以寫為以下形式:
=LOOKUP("座",A:A)
當(dāng)省略結(jié)果區(qū)域時(shí)聚假,LOOKUP默認(rèn)查找區(qū)域即為結(jié)果區(qū)域块蚌。
再比如,查找A列最后出現(xiàn)的數(shù)值:
=LOOKUP(9^9,A:A)
9^9是9的9次方魔策,一個(gè)極大的數(shù)值匈子,比絕大部分?jǐn)?shù)值均大,因而該公式返回A列最后一個(gè)數(shù)值闯袒。
覺得這個(gè)套路沒有什么實(shí)用價(jià)值虎敦?
那我們就把這個(gè)套路換個(gè)形式延伸一下……
如下圖所示游岳,需要查詢D2單元格指定人名的考試成績。
這是一個(gè)單條件的查詢問題其徙,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é)果為錯(cuò)誤值#DIV/0!访锻,也就返回一個(gè)由0和錯(cuò)誤值構(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自帶天賦忽略錯(cuò)誤值,而查找值1又比查找范圍內(nèi)所有的0都大闹获,因而該公式可以直接返回最后一個(gè)符合條件的值所對應(yīng)的結(jié)果期犬。
該公式總結(jié)一下,也就成了LOOKUP單條件查詢的經(jīng)典套路:
=LOOKUP(1,0/(條件區(qū)域1=條件值),結(jié)果)
……