模糊查找向來都是一個比較難的點,即使你對VLOOKUP、LOOKUP函數很熟悉,但有些問題也是要想很久。但當你學會下面這5個方法時,工作簡直跟開了挂一樣!
下圖中,我們想要通過E列的姓名在B:C表數據區域中找到對應的銷售的産品,因為一款産品會有多個人銷售,所以把銷售相同産品的姓名放在了同一個單元格中,這種就需要用到模糊查找了。
下面跟大家講解模糊查找的5個方法:
一、使用VLOOKUP函數。
F2單元格的公式:=VLOOKUP("*"&E2&"*",B:C,2,0)。
公式解析:
給E2單元格前後都加上星号(*:表示通配符),以E2單元格作為查找值,但查找區域中并不完全等于E2,有可能還包含其他字符,所以就需要加上這個通配符。
二、使用LOOKUP FIND函數。
F2單元格的公式:=LOOKUP(,-FIND(E2,$B$2:$B$4),$C$2:$C$4)。
公式解析:
FIND(E2,$B$2:$B$4):返回E2單元格的姓名在B2:B4單元格中的起始位置,結果為{#VALUE!;5;#VALUE!},在該數組前面加上符号,得到結果{#VALUE!;-5;#VALUE!}。
=LOOKUP(,{#VALUE!;-5;#VALUE!},$C$2:$C$4):在{#VALUE!;-5;#VALUE!}查找最接近于0的值,顯然隻有-5,-5所在的位置為2,C2:C4單元格第2行的結果為“紙巾”。
三、使用INDEX MATCH FIND函數。
F2單元格的公式:{=INDEX($C$2:$C$4,MATCH(1,-FIND(E2,$B$2:$B$4)))}。
注意:公式左右兩邊的大花括号是按“Ctrl Shift Enter”自動生成的,手動輸入無效。
公式解析:
FIND(E2,$B$2:$B$4):返回E2單元格的姓名在B2:B4單元格中的起始位置,結果為{#VALUE!;5;#VALUE!},在該數組前面加上符号,得到結果{#VALUE!;-5;#VALUE!}。MATCH(1,{#VALUE!;-5;#VALUE!}):MATCH函數用于返回指定數值在指定數組區域中的位置。第1個參數為1時,表示MATCH函數會查找小于或等于{#VALUE!;-5;#VALUE!}這個數組的最大值,也就是-5,-5在該數組中的位置為2,所以公式=MATCH(1,{#VALUE!;-5;#VALUE!})結果為2。=INDEX($C$2:$C$4,2):INDEX函數是返回表或區域中的值或值的引用。該公式的意思是:從C2:C4單元格區域中,返回第2行的值,所以結果為“紙巾”。
四、使用INDEX MIN ISNUMBER FIND ROW函數。
F2單元格的公式:{=INDEX(C:C,MIN(IF(ISNUMBER(FIND(E2,$B$2:$B$4)),ROW($A$2:$A$4),9999)))}。
注意:公式左右兩邊的大花括号是按“Ctrl Shift Enter”自動生成的,手動輸入無效。
公式解析:
FIND(E2,$B$2:$B$4):返回E2單元格的姓名在B2:B4單元格中的起始位置,結果為{#VALUE!;5;#VALUE!}。ISNUMBER函數檢測一個值是否為數值,返回TRUE和FALSE。所以公式ISNUMBER(FIND(E2,$B$2:$B$4))返回{FALSE;TRUE;FALSE},用IF函數判斷條件ISNUMBER(FIND(E2,$B$2:$B$4))是否為TRUE,為TRUE時返回A2:A4的行号,為FALSE時返回一個比A2:A4行号大的值,這裡返回的結果是{9999;3;9999},再用MIN函數取裡面的最小值,為3。=INDEX(C:C,3)的意思是,從C列中,返回第3行的值,結果為“紙巾”。
五、使用INDEX MIN IF ISERROR FIND ROW函數。
F2單元格的公式:{=INDEX(C:C,MIN(IF(ISERROR(FIND(E2,$B$2:$B$4,1)),9999,ROW($2:$4))))}。
注意:公式左右兩邊的大花括号是按“Ctrl Shift Enter”自動生成的,手動輸入無效。
公式解析:
FIND(E2,$B$2:$B$4,1):從單元格第1個字符開始查找關鍵字,返回E2單元格的姓名在B2:B4單元格中的起始位置,結果為{#VALUE!;5;#VALUE!}。用ISERROR判斷是否有錯誤值,返回TRUE和FALSE,ISERROR(FIND(E2,$B$2:$B$4,1))的結果為{TRUE;FALSE;TRUE},用IF函數判斷條件ISERROR(FIND(E2,$B$2:$B$4,1))是否為TRUE,如果為TRUE,返回9999,如果為FALSE,返回第2-4行的行号。所以公式IF(ISERROR(FIND(E2,$B$2:$B$4,1)),9999,ROW($2:$4))返回的結果為{9999;3;9999},再用MIN函數取裡面的最小值,為3。=INDEX(C:C,3)的意思是,從C列中,返回第3行的值,結果為“紙巾”。
覺得文章不錯,請轉發和點贊,謝謝!
,