close

403

Lookup函數0/結構的詳細剖析

示範檔

範例檔

403.XLSX

結果檔

Lookup函數功能很強大,它可以範圍查找、最後一個符合條件查找、多條件查找等

如下圖所示,在G4儲存格設置公式,根據G2的入庫時間和G3的產品名稱,從B欄中查找對應的入庫單價。

image

F3儲存格公式:「=LOOKUP(1,0/((A2:A7=F1)*(B2:B7=F2)),C2:C7)

有很多同學提問,為什麼要用0/的結構?其實該結構廣泛應用於lookup查找公式中,為了幫助同學們理解以便能靈活應用。今天就此進行詳細的剖析:

首先,先看看(A2:A7=F1)*(B2:B7=F2)運算後是什麼個結果?

Excel公式中如果:

AB的值相等,=A=B 會傳回結果TrueTrue在四則運算中相於數字1

AB的值不相等,=A=B 會傳回結果FalseFalse在四則運算中相於數字0

所以(A2:A7=F1)的結果是由FalseTrue構成的一組值,如果放在儲存格中,結果如E6E11範圍值所示:

image

同樣(B2:B7=F2)的結果也是由TrueFasle組成的一組數值,而2個相同大小的一組值相乘,True*True=1True*False=0False*False=0,相乘的最終結果是由10組成的一組數。如下圖 H7:H12 所示。

image

由上圖可以看出,相乘結果中值為1的列(G8所示),正是符合兩個條件的行。那麼怎麼把這個1的位置提取出來呢?

Lookup函數的查找原理是二分法。按二分法原理,Lookup函數會在在二分位處查找,要想準確查找到,這組值需要按昇冪排列,而只是公式(A2:A7=F1)*(B2:B7=F2)的結果是不符合要求的。

於是高手們想出了用0除的方法,把結果由10變成了由1和錯誤值構成的一組值。唯一符合條件的值為0,其他的均為錯誤值#DIV/0!

image

Lookup函數還有一個關鍵的特徵,查找時可以忽略錯誤值,這樣一組數值忽略後只剩下一個值,這時只需要使用任一個大於等於0的值查找即可。即:

=LOOKUP(1,0/((A2:A7=F1)*(B2:B7=F2)),C2:C7)

補充:0/的目的就是把符合條件的變成0,其他的變成錯誤值,利用Lookup查找忽略錯誤值的特徵查找到符合條件的值。


arrow
arrow

    錦子老師 發表在 痞客邦 留言(0) 人氣()