#Excel查找函數最常用的是Vlookup,而且是經常用其精確查找。Lookup函數的強大之處在于其“二分法”的原理。
=LOOKUP(查找值,查找區域(Vector/Array),[返回結果區域])
- 為什么查找區域必須升序/降序?
理解二分法:
公式默認查找范圍是有序排列,
公式先拿查找值與表中的最中間的值作比較,如果查找值<中間值,則找表中上半部分中間值再作比較,反之,找下半部分中間值比較,以此往復。
優點:高效,計算量小;
缺點:如果查找區域不是按順序排列的,則只能模糊查找,即使有精確匹配。
例:查找數字8,先與6對比,比6大,與下半部分對比,1&7,7小于8且最近,所以結果是7;但是當1與7對調位置時,結果就是1。
- 如果查找不到結果,則會返回一個小于查找值的最大值;
- 利用上一條原則,我們如果想查找最后一行值(查找值為漢字),且最后一行不斷更新,那么思路就是:盡可能找一個排序靠后的漢字(一般選“坐”);
- 精確查找公式變型:=LOOKUP(查找值,0/(查找區域=查找值),返回值區域),此情況下,返回值區域不可省略;
分子0可以換成任意自然數嗎?
不能,分子必須小于等于查找值;
0/(條件區域),如果只有一個真值,那么就會返回一個由{#DIV/0!,0}構成的數組(只有一個0,其他都是#DIV/0),那么查找區域就被鎖定為其一行,故而可精準查找,如果分子>查找值,違背了函數定義;當數組中沒有符合值時,查詢比查找值小的最大值。 - 當需要滿足多個查找條件時,公式變型為:
=LOOKUP(1,0/(查找區域1=查找值1)*(查找區域2=查找值2),返回值區域) - 當1對多查詢時(精準查詢),為什么只返回靠后的結果?
見上文“理解二分法”。