LOOKUP函數(shù)在職場(chǎng)中被稱為查找神器竖哩,并且有九種用法:LOOKUP的九種用法匈挖。但是如果不知道其查找原理很難做到靈活運(yùn)用到工作當(dāng)中惰拱,今天我就帶領(lǐng)大家深入理解LOOKUP函數(shù)的查找原理轨域。
一鹿鳖、 LOOKUP函數(shù)基本知識(shí)
語法:
LOOKUP(查找值,查找區(qū)域疫衩,結(jié)果區(qū)域)
示例:=LOOKUP("劉備",A2:A7,B2:B7)
這里講的是LOOKUP最初級(jí)的用法原理
要點(diǎn):
1硅蹦、“查找區(qū)域”中的值必須按升序排列:..., -2, -1, 0, 1, 2, ..., A-Z, FALSE, TRUE;否則闷煤,LOOKUP 可能無法返回正確的值童芹。 文本不區(qū)分大小寫。
注意LOOKUP的高級(jí)用法也就是=LOOKUP(1,0/(條件1)*(條件2)鲤拿,查找的數(shù)組或區(qū)域)已經(jīng)避免了是否升序的弊端假褪。
2、 如果 LOOKUP 函數(shù)找不到“查找值”近顷,則該函數(shù)會(huì)與“查找區(qū)域”中小于或等于“查找值”的最大值進(jìn)行匹配(注:在滿足要點(diǎn)1“數(shù)據(jù)升序排列”的前提下)生音。
3、 Excel幫助文件上要求:“查找區(qū)域”與“結(jié)果區(qū)域”大小必須相同窒升,實(shí)際上可以不必相同缀遍。
LOOKUP第三參數(shù)如果為一個(gè)單元格(比如輸入B2或B2:B2),則取值范圍默認(rèn)為橫向饱须,等同于B2:H2域醇、B2:M2等。
如果第三參數(shù)是包含二個(gè)單元格以上的縱向單元格區(qū)域,則單元格范圍大小不影響公式的計(jì)算譬挚。比如下面的公式是等效的
=LOOKUP("劉備",A2:A7,B2:B3)
=LOOKUP("劉備",A2:A7,B2:B7)
=LOOKUP("劉備",A2:A7,B2:B65535)
有點(diǎn)類似于SUMIF第三參數(shù)(SUMIF第三參數(shù)真正起作用的是第三參數(shù)單元格區(qū)域左上角那個(gè)單元格锅铅,起到坐標(biāo)定位的作用。
二减宣、LOOKUP函數(shù)的查找原理
查找原理和要點(diǎn)可總結(jié)為四條:
1盐须、LOOKUP函數(shù)要求“查找區(qū)域”中的值必須按升序排列。如果“查找區(qū)域”沒有按升序排列漆腌,Lookup函數(shù)也會(huì)很傻很天真地認(rèn)為你是個(gè)按規(guī)則辦事的人丰歌,你已將數(shù)據(jù)按升序排列。
注意:這一點(diǎn)對(duì)理解LOOKUP函數(shù)的查找邏輯非常重要屉凯。
2立帖、由于“查找區(qū)域”已按要求按升序排列,為了提高查找效率悠砚,LOOKUP都是按二分法查找晓勇。
二分法在我們高中數(shù)學(xué)學(xué)函數(shù)單調(diào)的時(shí)候有涉及過,在數(shù)學(xué)中也是一個(gè)很好的結(jié)題方法灌旧。
具體的查找方式:
假設(shè)要查找的值為X绑咱,將X與已升序排列的“查找區(qū)域”最中間位置的那個(gè)數(shù)(我們稱之為“位中值”)進(jìn)行比較:
若X等于或大于“位中值”,由于已按升序排列枢泰,前半段的數(shù)肯定比位中值更小描融,所以就在“查找區(qū)域”的后半段中,繼續(xù)按二分法進(jìn)行查找衡蚂。
若X小于“位中值”窿克,由于已按升序排列,后半段的數(shù)肯定比位中值更大毛甲,所以就在“查找區(qū)域”的前半段中年叮,繼續(xù)按二分法進(jìn)行查找。
確定中間位置的計(jì)算方式:個(gè)數(shù)為奇數(shù)時(shí)取最中間那個(gè)玻募,為偶然個(gè)時(shí)并列最中間的那兩個(gè)數(shù)的左邊那個(gè)只损。
3、 如果 LOOKUP 找不到與“查找值”相等的數(shù)七咧,它會(huì)使用“查找區(qū)域”中小于或等于 “查找值”的最大值跃惫。
要注意的是:“查找區(qū)域”亂序的時(shí)候,并不一定會(huì)返回小于或等于的最大值艾栋,而是一直按二分法進(jìn)行查找爆存,直到查找到相等的數(shù)或查找完“按規(guī)則應(yīng)該查找的位置”(不是查找完所有的值),如果還找不到相等的數(shù)裹粤,就返回結(jié)束查找前最近一個(gè)符合條件的值终蒂。如果有多個(gè)符合條件蜂林,則返回最后一個(gè)符合條件的值遥诉。
4拇泣、LOOKUP在查找區(qū)域中的遇到空值和錯(cuò)誤值時(shí),會(huì)忽略空值和錯(cuò)誤值矮锈,繼續(xù)在后半段進(jìn)行二分法查找霉翔。
為了更好地模擬下面這個(gè)原理圖,我在網(wǎng)上看到一個(gè)大神做了一個(gè)二分法的模擬器苞笨,要文件的私聊债朵。
下面舉一個(gè)很簡(jiǎn)單的列子來介紹,LOOKUP是如何用二分法查找的
參考鏈接:
LOOKUP函數(shù)-Office支持
二分法算法的實(shí)現(xiàn)