Excel中LOOKUP函式是一個充滿了套路的函式,同時也是一個很強大很實用的函式,之前涉及到這個函式的教程估計能有幾十篇。
但是,關於這個函式,有一個提問率很高的問題始終沒有說的太明白,就是LOOKUP(1,0/……)這個套路中的1和0/到底該怎麽理解。
例如這個公式=LOOKUP(1,0/((F2=$A$2:$A$13)*(G2=$B$2:$B$13)),$C$2:$C$13)中就有(1,0/……),今天單獨來解釋這個問題。
其實公式中的1就表示數位1,0就表示數位0,僅此而已。
這和VLOOKUP(A1,IF({1,0},B:B,A:A),2,0)中的1和0完全不同(想了解vlookup中的1和0是怎麽回事可以留言,咱們下次解釋)。
LOOKUP(1,0/……)中的關鍵部份是0/……這部份,咱們結合範例來看。
這個例子是一個多條件匹配的問題,按照姓名和品名匹配對應的銷售數量。
註意0/後面是兩個比較運算相乘,(F2=$A$2:$A$13)*(G2=$B$2:$B$13)中左邊的部份是以姓名作為判斷條件,右邊的部份是以品名作為判斷條件。
F2=$A$2:$A$13的結果是一組由FALSE和TRUE構成的陣列。$A$2:$A$13中只有兩個姓名與F2(侯啟龍)一致,顯示為TRUE,其他的都是FALSE。
G2=$B$2:$B$13的結果同樣,與G2(空調)對應的都是TRUE,其他的都是FALSE。
兩組邏輯值相乘的時候,TRUE=1,FALSE=0,按照這個規則得到的結果是一組1和0。
為了讓大家看明白這個結果,我把兩組邏輯值並排列出來,只有上下同時為TRUE的,結果才是1,否則都是0,這個大家應該都明白。
{FALSE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE}
{TRUE;TRUE;TRUE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;TRUE;FALSE}
不難看出,只有第二個位置上滿足條件,至此,我們解釋了0/後面的這一堆{0;1;0;0;0;0;0;0;0;0;0;0}是怎麽來的。
這一連串的計算只是做了將條件轉為邏輯值,再將邏輯值轉為數位的過程。接下來再說0/,這裏面的/就是除法,其實不用0/也行,用1/,2/,3/,0.5/都行,只是得到的結果不同。
0/得到一組包含錯誤值的數據,其中只有一個數位0。
用其他的數位也是一樣的道理,比如我們用3/,得到的就是這樣的結果。
搞清楚了數位的作用,再來看/。至於/能不能用別的,還是建議用除法,因為分母是一組由1和0構成的陣列,其中的1對應的是滿足我們設定條件的結果,0都是不需要的,只有分母為0才能得到錯誤值,因此這裏推薦用/。
再來梳理一下,先透過比較運算把條件轉換成邏輯值,再利用邏輯值計算把條件變成數位,最後用除法把不需要的內容變成錯誤值,需要的內容變成一個數位,這個數位的具體表示取決於分母,用0只是一種約定俗成的習慣,這就是0/((條件1=條件區域1)*(條件2=條件區域2))這個套路的原理。如果還有其他條件,增加分母的比較運算就可以了,只是要註意括弧別放錯位置。
最後就剩這個1是什麽意思了,開頭就說了,1就是數位1。如果用的0/,那麽就可以用1,如果用的1/,數位1就要換成不小於1的數,例如2。
也就是說,LOOKUP(1,0/……)中的1和0,都是可以換成其他數位的,只要前面的數位不小於分母的數位即可,如果你用LOOKUP(1,2/……)的話,就會得出錯誤值。
至於為什麽會這樣,在官方的函式解釋中說的明白:
§如果 LOOKUP 函式找不到 lookup_value,則該函式會與 lookup_vector 中小於或等於 lookup_value 的最大值進行匹配。
§如果 lookup_value 小於 lookup_vector 中的最小值,則 LOOKUP 會返回 #N/A 錯誤值。
看完教程,還有疑問的夥伴,歡迎群裏交流喲~
寵 粉 福 利
2元領取:全套Excel技巧視訊+200套樣版
點"閱讀原文",學習更多的Excel視訊教程