昨天,蘭色刷到一個好笑的視頻。臺灣省一主持人說:為什么近期這么多人去電影院看《長津湖》,是因為大陸一直停電,沒電可用了,所以....
蘭色又想起之前臺灣省“名嘴”黃世聰在節(jié)目中聲稱“大陸人吃不起榨菜”,引發(fā)網(wǎng)友群嘲。大陸人真的吃不起榨菜嗎?
蘭色今天做了一個表格,在用“榨菜”搜索時,發(fā)現(xiàn)返回的價格竟然2000元一斤,好貴啊,真的吃不起了。
=LOOKUP(A11,A2:B6)
上表中榨菜對應(yīng)的單價是3元,所以肯定是B11的公式出錯了。lookup不行,換vlookup函數(shù)試試,好象也錯了:
=VLOOKUP(A11,A2:B6,2)
熟悉Vlookup函數(shù)的同學(xué)一眼就可以看出:蘭色,你的Vlookup函數(shù)公式少了最后一個參數(shù) (false)。
嘿嘿,的確如此。因為Vlookup函數(shù)缺省最后一個參數(shù)時,為匹配查找。所以結(jié)果會出錯。
只是,蘭色故意把公式寫錯,是想考考你:Lookup和Vlookup公式最后的結(jié)果為什么是2000?而不是3000、2、1900?
估計真正理解的人很少很少,因為這涉及Excel函數(shù)公式的一個頂級知識點:二分法
在Excel中,Lookup是二分法查找,而Vlookup、Match函數(shù)缺少最后一個參數(shù)時,都會啟動二分法查找。
本例中,二分法查找首先會從A4單元格開始查找(二分位,計算方法是=INT((總行數(shù)+1)/2))
通過對比漢字大小,結(jié)果是 榨菜>魚翅 (可以用code提取數(shù)字代碼驗證),這會讓二分法繼續(xù)向下查找(如果二分位漢字>榨菜,則會向上繼續(xù)二分位查找),把下半部分的區(qū)域一分為二,確定二分位后進(jìn)行對比。結(jié)果是查到最后一行也是小于榨菜,所以最終查找到的值是B列最后一行的值2000。
蘭色曾詳細(xì)介紹過二分法的原理,同學(xué)們可以在本公眾號搜 二分法查找到教程。這里不再詳述。
對于看的已頭暈眼花的新手,只需要記住蘭色一句話:
當(dāng)查找的值大于一列中所有值的時候,二分法就會返回最后一行的值。
所以,也就有了下面超實用的公式,可以動態(tài)返回最后一行的數(shù)字:
=LOOKUP(9E+307,A:A)
注:9E307是Excel中接近最大數(shù)字的值
當(dāng)然,用vlookup 也可以
=VLOOKUP(9E+307,A:A,1)
如果返回最后一個漢字,可以用
=LOOKUP( '座',A:A)
如果能明白這個原理,我們最常用的多條件查找公式你也可以理解了。
=LOOKUP(1,0/((A2:A5=A9)*(B2:B5=B9)),C2:C5)
把符合條件的值變成0(不符合條件的變成了錯誤值),然后再用一個大于0的數(shù)(這里的1可以為任一大于0的數(shù)字)查找,就會返回最后一個0(符合條件)所對應(yīng)的值。
蘭色說:Excel公式之所以錯,是因為不應(yīng)該用二分法時用了二分法,而臺灣省名嘴之所以認(rèn)為大陸人吃不起榨菜,同樣是因為不當(dāng)?shù)亩址ㄑ酃?,過去的大陸和如今飛速發(fā)展的大陸,豈可同時而語!