常規的模糊查詢分為兩種情況,一種是數值;一種是文字。
一、數值模糊查詢
首先我們分享關於數值的模糊查詢。
舉例:某公司需要為新員工定製工作服,現在需要根據員工的實際身高匹配需要定製衣服的尺碼。
這種情況就需要透過模糊查詢來返回每個員工身高所對應的尺寸。有兩種方法來完成。
方法一:LOOKUP
函式公式:
=LOOKUP(B2,{0;165;170;175;180;185;190},{"S";"M";"L";"XL";"XXL";"XXXL";"XXXXL"})
公式解析:
這是透過LOOKUP向量形式來完成模糊查詢。可以理解為查詢B2單元格處於{0;165;170;175;180;185;190}哪個區間,如果在某個區間內就返回對應{"S";"M";"L";"XL";"XXL";"XXXL";"XXXXL"}的文字資訊。
譬如169位於165-170之間,那麼就返回“M”文字資訊。
這裡的區間對應關係如下。0到小於165的屬於S尺寸;165到小於170的屬於M尺寸,依次類推,直到大於等於190的屬於XXXXL尺寸。
方法二:VLOOKUP
=IFERROR(VLOOKUP(B2+5,F:G,2,1),"S")
日常工作中我們使用VLOOKUP函式時第四個引數都是輸入0,表示精確查詢,此處第四引數為1,表示近似查詢。
1.透過函式公式=VLOOKUP(B2,F:G,2,1)即可返回目標區域中小於等於查詢值的最大值所對應的尺碼。注意:在使用VLOOKUP函式進行模糊查詢之前必須要將查詢範圍F:G處的資料按查詢內容(此處為身高)進行升序排序。
例如,我們查詢172,那麼就返回目標區域中小於等於172的最大值即170,對應的尺碼為M。由於服裝的尺寸是就高不就低,身高172的員工必須定製身高175的L碼的衣服,所以我們在查詢匹配時需要在員工身高基礎上加5,這樣就能返回大於身高的最小尺寸了。
2.員工中有部分身高即使加5後仍小於165,因為F列165就是最小的了,所以這部分資料無法在F列查詢到所需值,VLOOKUP函式返回錯誤值#N/A。我們希望小於165的員工都定製S號,就透過IFERROR函式將VLOOKUP錯誤結果重定向為文字字元“S”。
二、文字字元模糊查詢
下面分享文字的模糊查詢,例如,透過查詢AB返回查詢區域中包含AB的AAAABBB單元格所對應的值。
舉例:下表為各公司2018年度營業額資料,公司名稱為全稱。現在我們在另外一個表中需要根據公司簡稱來匹配相關的營業額資料。
方法一:VLOOKUP+萬用字元
=VLOOKUP("*"&E2&"*",A:B,2,0)
公式解釋:
*代表所有字元,"*"&E2&"*"則表示包含E2單元格文字內容的所有內容。
方法二:LOOKUP+FIND
=LOOKUP(1,0/FIND(E2,A$2:A$8),B$2:B$8)
公式用了LOOKUP查詢套路。透過FIND函式判斷E2單元格中文字處於A$2:A$8單元格中的位置,如果存在則返回大於0的數值,否則返回錯誤值;然後0/FIND(),則得到一組0和錯誤值的陣列;最後LOOKUP函數出手,在陣列中找到最大的不大於1的值,0,並根據0所在位置,返回對應的B$2:B$8中的值。
順便說一嘴:如果你只想透過簡稱查到全稱,則公式可以改成=LOOKUP(1,0/FIND(E2,A$2:A$8), A$2:A$8)。
常規的模糊查詢分為兩種情況,一種是數值;一種是文字。
一、數值模糊查詢
首先我們分享關於數值的模糊查詢。
舉例:某公司需要為新員工定製工作服,現在需要根據員工的實際身高匹配需要定製衣服的尺碼。
這種情況就需要透過模糊查詢來返回每個員工身高所對應的尺寸。有兩種方法來完成。
方法一:LOOKUP
函式公式:
=LOOKUP(B2,{0;165;170;175;180;185;190},{"S";"M";"L";"XL";"XXL";"XXXL";"XXXXL"})
公式解析:
這是透過LOOKUP向量形式來完成模糊查詢。可以理解為查詢B2單元格處於{0;165;170;175;180;185;190}哪個區間,如果在某個區間內就返回對應{"S";"M";"L";"XL";"XXL";"XXXL";"XXXXL"}的文字資訊。
譬如169位於165-170之間,那麼就返回“M”文字資訊。
這裡的區間對應關係如下。0到小於165的屬於S尺寸;165到小於170的屬於M尺寸,依次類推,直到大於等於190的屬於XXXXL尺寸。
方法二:VLOOKUP
函式公式:
=IFERROR(VLOOKUP(B2+5,F:G,2,1),"S")
日常工作中我們使用VLOOKUP函式時第四個引數都是輸入0,表示精確查詢,此處第四引數為1,表示近似查詢。
公式解析:
1.透過函式公式=VLOOKUP(B2,F:G,2,1)即可返回目標區域中小於等於查詢值的最大值所對應的尺碼。注意:在使用VLOOKUP函式進行模糊查詢之前必須要將查詢範圍F:G處的資料按查詢內容(此處為身高)進行升序排序。
例如,我們查詢172,那麼就返回目標區域中小於等於172的最大值即170,對應的尺碼為M。由於服裝的尺寸是就高不就低,身高172的員工必須定製身高175的L碼的衣服,所以我們在查詢匹配時需要在員工身高基礎上加5,這樣就能返回大於身高的最小尺寸了。
2.員工中有部分身高即使加5後仍小於165,因為F列165就是最小的了,所以這部分資料無法在F列查詢到所需值,VLOOKUP函式返回錯誤值#N/A。我們希望小於165的員工都定製S號,就透過IFERROR函式將VLOOKUP錯誤結果重定向為文字字元“S”。
二、文字字元模糊查詢
下面分享文字的模糊查詢,例如,透過查詢AB返回查詢區域中包含AB的AAAABBB單元格所對應的值。
舉例:下表為各公司2018年度營業額資料,公司名稱為全稱。現在我們在另外一個表中需要根據公司簡稱來匹配相關的營業額資料。
方法一:VLOOKUP+萬用字元
函式公式:
=VLOOKUP("*"&E2&"*",A:B,2,0)
公式解釋:
*代表所有字元,"*"&E2&"*"則表示包含E2單元格文字內容的所有內容。
方法二:LOOKUP+FIND
函式公式:
=LOOKUP(1,0/FIND(E2,A$2:A$8),B$2:B$8)
公式解釋:
公式用了LOOKUP查詢套路。透過FIND函式判斷E2單元格中文字處於A$2:A$8單元格中的位置,如果存在則返回大於0的數值,否則返回錯誤值;然後0/FIND(),則得到一組0和錯誤值的陣列;最後LOOKUP函數出手,在陣列中找到最大的不大於1的值,0,並根據0所在位置,返回對應的B$2:B$8中的值。
順便說一嘴:如果你只想透過簡稱查到全稱,則公式可以改成=LOOKUP(1,0/FIND(E2,A$2:A$8), A$2:A$8)。