在最新的Office365版中,新增Xlookup函數(shù)幾乎要完全取代Vlookup。但由于版本的限制,大多數(shù)人還只能繼續(xù)使用Vlookup函數(shù)。不過,還有一個(gè)函數(shù)可以和Xlookup相媲美,它就是大家都知道的
LOOKUP函數(shù)
關(guān)于Lookup公式蘭色以前分享了很多,只是大多數(shù)人只會套用,并不理解公式的含義,所以今天蘭色想通過更深入的講解,讓同學(xué)們真正掌握Lookup函數(shù)的用法。
學(xué)習(xí)Lookup函數(shù),還是要從它的基本語法起步。
lookup函數(shù)有兩種語法結(jié)構(gòu),蘭色翻譯成中文:
Lookup(查找的值,在一列或一行區(qū)域中查找,[返回值的一行/列區(qū)域])
Lookup(查找的值,數(shù)組)
多數(shù)同學(xué)都看不懂這兩種語法的具體用法,蘭色還是舉例說明一下。
【例】如下圖所示,要求根據(jù)D2的學(xué)號,查找對應(yīng)的姓名。
公式1:
=LOOKUP(D2,A2:A7,B2:B7)
公式2:
=LOOKUP(D2,A2:B7)
由上面公式可以看出,第2個(gè)公式是直接引用2列的單元格區(qū)域(A2:B7)。顯然比第1種方法更簡單。那還學(xué)第1種干嘛? 因?yàn)橛袝r(shí)數(shù)據(jù)不一定相鄰或反向查找需要。如下圖所示學(xué)號在姓名后面:
既然有Lookup函數(shù),為什么還要設(shè)計(jì)出VLookup函數(shù)? 是因?yàn)長ookup有一個(gè)致命缺陷。就是它的第2個(gè)參數(shù)必須按升序排列。微軟官方是這么說的:
值必須按升序排列:..., -2, -1, 0, 1, 2, ..., A-Z, FALSE, TRUE;否則,LOOKUP 可能無法返回正確的值。文本不區(qū)分大小寫。
如果你不排序,結(jié)果可能會出錯(cuò)。(出錯(cuò)原因是lookup是按二分法查找的)
下面的A0004查找的姓名竟然是王五,錯(cuò)!
有可能錯(cuò)誤,誰還敢用lookup函數(shù)?
想不出錯(cuò)?所以就有了 0/的經(jīng)典用法:讓區(qū)域和值進(jìn)行對比,然后用0除
=LOOKUP(0,0/(A2:A7=D2),B2:B7)
為什么0/就可以?
先選中該局部公式(0/(A2:A7=D2))按F9查看結(jié)果,發(fā)現(xiàn)除第2個(gè)值是0外,其他的全部是錯(cuò)誤值#DIV/0!
{#DIV/0!;0;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!}
原理很簡單,A2:A7區(qū)域中和D2相等返回True,不相等返回False。而在Excel計(jì)算時(shí)True等同于數(shù)字1,而False等同于數(shù)字0。當(dāng)除數(shù)是1時(shí),0/1 結(jié)果是0,而0/0結(jié)果是錯(cuò)誤值。
Lookup函數(shù)可以忽略錯(cuò)誤值,所以只有一個(gè)0的數(shù)組也無所謂是不是升序了。第1個(gè)參數(shù)用 0就可以進(jìn)查找了。
=LOOKUP(0,{#DIV/0!;0;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!},B2:B7)
用LOOKUP函數(shù)好麻煩?。槭裁床挥肰lookup?
答案是Lookup可以進(jìn)行多條件查找,而Vlookup不可以
=LOOKUP(0,0/((A2:A7=A11)*(B2:B7=B11)),C2:C7)
由此,萬能的多條件查找公式為:
Lookup(0,0/(條件1*條件2*...條件n),返回值區(qū)域)
當(dāng)然,從右向左查也可以搞定
=LOOKUP(0,0/(B2:B7=D2),A2:A7)
除此之外,當(dāng)有無法精確查找時(shí),Lookup會從后向前查,查找與被查找值最接近且比它小的值。這個(gè)特征讓Lookup函數(shù)可以實(shí)現(xiàn)Vlookup無法完成的任務(wù)。
【例】查找A產(chǎn)品最后一次進(jìn)貨價(jià)格
=LOOKUP(1,0/(B2:B7=A11),C2:C7)
細(xì)心的同學(xué)會發(fā)現(xiàn),之前第1個(gè)參數(shù)是0,現(xiàn)在是用1。原因就是因?yàn)橛袔讉€(gè)符合條件的值,第2個(gè)參數(shù)就會生成多少0,這時(shí)用一個(gè)比0大的數(shù)字1(也可以是2,3,4.....)就可以從后向前查找,查找到最后一個(gè)0值。
【例】提取最前面的數(shù)字
=LOOKUP(9^9,--LEFT(B2,ROW(1:10)))
公式說明:
用Left逐個(gè)截取(2,23,234,234.34,234.3....),用--(兩個(gè)負(fù)號)轉(zhuǎn)換成數(shù)值,文本轉(zhuǎn)換成錯(cuò)誤值,最后用一個(gè)足夠大的數(shù)(這里用9^9,也可以是其他更大的數(shù))查找最后一個(gè)比它小且最接近的數(shù)字。
數(shù)字在任意位置?萬能提取公式在此:
=LOOKUP(9^9,MID(B2,MATCH(1,MID(B2,ROW(1:9),1)^0,0),ROW(1:9))*1)
最后再分享幾個(gè)lookup模糊匹配的示例,感受一下它強(qiáng)大的用法。
【例】如下圖所示,要求根據(jù)提供的城市從上表中查找該市名的第2列的值。
=LOOKUP(9^9,FIND(A7,A2:A4),B2:B4)
【例】如下圖所示,要求根據(jù)地址從上表中查找所在城市的提成。
=lookup(9^9.find(A$3:A$6,A10),B$3:B$6)
【例】如下圖所示的A列,是包括車類別的明細(xì)車型,現(xiàn)需要在B列把車類別提取出來。(車類別有四種:捷達(dá),速騰,邁騰,高爾夫)
=LOOKUP(9^9,FIND({'捷達(dá)','速騰','邁騰','高爾夫'},A2),{'捷達(dá)','速騰','邁騰','高爾夫'})
蘭色說:雖然蘭色很費(fèi)力在講解,估計(jì)還是有大多數(shù)同學(xué)看不太明白這個(gè)Excel高手必備函數(shù)。所以建議同學(xué)們先收藏起來,看不懂的公式就先學(xué)會套用,以后慢慢再理解。
聯(lián)系客服