Excel中的多條件查找,其實(shí)不是很難,很多小伙伴都知道查找用lookup、vlookup函數(shù),但具體怎么使用卻不知所措。
今天跟大家分享多條件查找最常用的8個方法,如果你以前不懂,現(xiàn)在看看這篇文章,絕對可以給你帶來收獲~
下圖是一個學(xué)科成績表,我們需要通過左表的姓名和學(xué)號兩個條件在右表中查找對應(yīng)的成績并返回到左表的E列中。
方法一:使用LOOKUP函數(shù)。
具體操作步驟如下:
1、選中E2單元格 -- 在編輯欄中輸入公式“=LOOKUP(1,0/(A2=$G$2:$G$11)*(B2=$H$2:$H$11),$I$2:$I$11)”-- 按回車鍵回車,并將公式下拉填充至E11單元格。
2、動圖演示如下。
3、公式解析。
(1)(A2=$G$2:$G$11)*(B2=$H$2:$H$11):
首先,將A2單元格的內(nèi)容與G2:G11單元格區(qū)域的內(nèi)容作對比,將B2單元格的內(nèi)容與H2:H11單元格區(qū)域的內(nèi)容作對比。如果A2單元格的內(nèi)容與G2:G11單元格區(qū)域的內(nèi)容相等,B2單元格的內(nèi)容與H2:H11單元格區(qū)域的內(nèi)容相等,則返回TRUE,不相等時,返回FALSE。根據(jù)邏輯值TRUE=1,F(xiàn)ALSE=0,所以這部分公式得到的結(jié)果可能有3種情況:0*1;1*1;1*0。公式A2=$G$2:$G$11返回的結(jié)果為{0;0;0;0;0;1;0;0;0;0},因?yàn)橹挥蠫6單元格的值與A2相等。公式B2=$H$2:$H$11返回的結(jié)果為{0;0;0;0;0;1;0;0;0;0},因?yàn)橹挥蠬6單元格的值與B2相等。所以公式(A2=$G$2:$G$11)*(B2=$H$2:$H$11)返回的結(jié)果為{0;0;0;0;0;1;0;0;0;0}。
(2)0/(A2=$G$2:$G$11)*(B2=$H$2:$H$11):
LOOKUP函數(shù),如果要精確查找,第2個參數(shù)查找區(qū)域必須升序排序,得到的結(jié)果才是正確的。但我們這里沒有升序排序,用到的是LOOKUP函數(shù)的二分法原理,用0來除以(A2=$G$2:$G$11)*(B2=$H$2:$H$11)這個公式的結(jié)果值,這里只會產(chǎn)生兩種情況:0/0或0/1。而在除法運(yùn)算中,被除數(shù)不能為0,也就是分母不能為0,所以在Excel中,0/0會得到錯誤值#DIV/0!,而0/1的結(jié)果為0。所以該公式返回的結(jié)果為{#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;0;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!}。
(3)=LOOKUP(1,0/(A2=$G$2:$G$11)*(B2=$H$2:$H$11),$I$2:$I$11):
根據(jù)第(2)步公式返回的結(jié)果{#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;0;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!},再根據(jù)LOOKUP函數(shù)的查找原理,忽略錯誤值查找,所以該公式的意思是,找到與1最接近的值,在第(2)步返回的結(jié)果數(shù)組中,錯誤值被忽略,只有一個0,0<1,因此返回I2:I11單元格范圍內(nèi)的第6個數(shù)據(jù),即I7單元格的內(nèi)容“68”。
方法二:使用VLOOKUP函數(shù)。
具體操作步驟如下:
1、選中E2單元格 -- 在編輯欄中輸入公式“=VLOOKUP(A2&B2,IF({1,0},$G$2:$G$11&$H$2:$H$11,$I$2:$I$11),2,0)”-- 按組合鍵“Ctrl Shift Enter”回車 -- 并將公式下拉填充至E11單元格。
2、動圖演示如下。
3、公式解析。
(1)A2&B2:
我們都知道,VLOOKUP函數(shù)查找時查找值默認(rèn)只能有一個條件,我們這里是多條件查找,所以可以通過文本連接符&將兩個條件連接起來作為新的查找值。新的查找值也就是“姓名學(xué)號”。
(2)IF({1,0},$G$2:$G$11&$H$2:$H$11,$I$2:$I$11):
{1,0}相當(dāng)于{TRUE,FALSE}。所以該公式就有兩種情況:第一種情況:=IF(1,$G$2:$G$11&$H$2:$H$11,$I$2:$I$11),這種情況返回G2:G11單元格區(qū)域內(nèi)容和H2:H11單元格區(qū)域內(nèi)容合并后的結(jié)果。第二種情況:=IF(0,$G$2:$G$11&$H$2:$H$11,$I$2:$I$11),這種情況返回I2:I11單元格區(qū)域內(nèi)容。所以{1,0}相當(dāng)于重新構(gòu)建了兩列數(shù)據(jù),第1列數(shù)據(jù)是以G2:G11單元格區(qū)域內(nèi)容和H2:H11單元格區(qū)域內(nèi)容合并后的數(shù)據(jù),第2列數(shù)據(jù)是I2:I11單元格區(qū)域構(gòu)建的數(shù)據(jù),如下圖所示。
(3)=VLOOKUP(A2&B2,IF({1,0},$G$2:$G$11&$H$2:$H$11,$I$2:$I$11),2,0):
第一個參數(shù)查找值“A2&B2”,要返回的結(jié)果值在IF構(gòu)建的新數(shù)據(jù)區(qū)域中,屬于第2列,所以第3個參數(shù)為2,這里是精確查找,所以第4個參數(shù)為0或者FALSE。
方法三:使用OFFSET函數(shù) MATCH函數(shù)。
具體操作步驟如下:
1、選中E2單元格 -- 在編輯欄中輸入公式“=OFFSET($I$1,MATCH(A2&B2,$G$2:$G$11&$H$2:$H$11,0),)”-- 按組合鍵“Ctrl Shift Enter”回車 -- 并將公式下拉填充至E11單元格。
2、動圖演示如下。
3、公式解析。
(1)MATCH(A2&B2,$G$2:$G$11&$H$2:$H$11,0):
將A2單元格的姓名與B2單元格的學(xué)號通過用文本連接符合并作為新的查找內(nèi)容,將G列的姓名和H列的學(xué)號通過文本連接符合并作為新的查找區(qū)域,0表示精確查找。該公式返回的結(jié)果為“6”。
(2)=OFFSET($I$1,MATCH(A2&B2,$G$2:$G$11&$H$2:$H$11,0),):
OFFSET函數(shù)是指以指定的單元格引用為參照系,通過給定偏移量得到新的引用。返回對單元格或單元格區(qū)域中指定行數(shù)和列數(shù)的區(qū)域的引用。 返回的引用可以是單個單元格或單元格區(qū)域。 可以指定要返回的行數(shù)和列數(shù)。該公式表示以$I$1為參照單元格,通過MATCH查找出來順序作為向下偏移的行數(shù),偏移列數(shù)量省略表示不偏移,第三個、第四個參數(shù)省略表示只返回一個單元格區(qū)域。第(1)步MATCH函數(shù)得到的結(jié)果為6,所以向下偏移6行時找到“68”。
方法四:使用SUM函數(shù)。
具體操作步驟如下:
1、選中E2單元格 -- 在編輯欄中輸入公式“=SUM((A2=$G$2:$G$11)*(B2=$H$2:$H$11)*($I$2:$I$11))”-- 按組合鍵“Ctrl Shift Enter”回車 -- 并將公式下拉填充至E11單元格。
2、動圖演示如下。
3、公式解析。
(1)A2=$G$2:$G$11:
判斷A2單元格的內(nèi)容是否與G2:G11單元格區(qū)域的內(nèi)容相等,如果相等,返回TRUE,否則,返回FALSE。該公式返回一個邏輯值數(shù)組{FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE}。
(2)B2=$H$2:$H$11:
判斷B2單元格的內(nèi)容是否與H2:H11單元格區(qū)域的內(nèi)容相等,如果相等,返回TRUE,否則,返回FALSE。該公式返回一個邏輯值數(shù)組{FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE}。
(3)=SUM((A2=$G$2:$G$11)*(B2=$H$2:$H$11)*($I$2:$I$11)):
3個值相乘,只有當(dāng)前面2個值都為TRUE時,最后的結(jié)果才為TRUE,而TRUE=1,F(xiàn)ALSE=0,從上面2步中,我們可以看到只有第6個值為TRUE,其余都為FALSE。再與I2:I11的值相乘,最后通過SUM函數(shù)將得到的值相加起來,最后的結(jié)果“68”,將公式往下填充,即可得到其他單元格的值。
方法五:使用SUMPRODUCT函數(shù)。
具體操作步驟如下:
1、選中E2單元格 -- 在編輯欄中輸入公式“=SUMPRODUCT((A2=$G$2:$G$11)*(B2=$H$2:$H$11)*($I$2:$I$11))”-- 按Enter鍵回車 -- 并將公式下拉填充至E11單元格。
2、動圖演示如下。
3、公式解析。
(1)A2=$G$2:$G$11:
判斷A2單元格的內(nèi)容是否與G2:G11單元格區(qū)域的內(nèi)容相等,如果相等,返回TRUE,否則,返回FALSE。該公式返回一個邏輯值數(shù)組{FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE}。
(2)B2=$H$2:$H$11:
判斷B2單元格的內(nèi)容是否與H2:H11單元格區(qū)域的內(nèi)容相等,如果相等,返回TRUE,否則,返回FALSE。該公式返回一個邏輯值數(shù)組{FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE}。
(3)=SUMPRODUCT((A2=$G$2:$G$11)*(B2=$H$2:$H$11)*($I$2:$I$11)):
3個值相乘,只有當(dāng)前面2個值都為TRUE時,最后的結(jié)果才為TRUE,而TRUE=1,F(xiàn)ALSE=0,從上面2步中,我們可以看到只有第6個值為TRUE,其余都為FALSE。再與I2:I11的值相乘,最后通過SUMPRODUCT函數(shù)將每個數(shù)組對應(yīng)元素的值相乘,最后再相加,得到的結(jié)果為“68”,將公式往下填充,即可得到其他單元格的值。
方法六:使用MAX函數(shù)。
具體操作步驟如下:
1、選中E2單元格 -- 在編輯欄中輸入公式“=MAX((A2=$G$2:$G$11)*(B2=$H$2:$H$11)*($I$2:$I$11))”-- 按組合鍵“Ctrl Shift Enter”回車 -- 并將公式下拉填充至E11單元格。
2、動圖演示如下。
3、公式解析。
(1)A2=$G$2:$G$11:
判斷A2單元格的內(nèi)容是否與G2:G11單元格區(qū)域的內(nèi)容相等,如果相等,返回TRUE,否則,返回FALSE。該公式返回一個邏輯值數(shù)組{FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE}。
(2)B2=$H$2:$H$11:
判斷B2單元格的內(nèi)容是否與H2:H11單元格區(qū)域的內(nèi)容相等,如果相等,返回TRUE,否則,返回FALSE。該公式返回一個邏輯值數(shù)組{FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE}。
(3)=MAX((A2=$G$2:$G$11)*(B2=$H$2:$H$11)*($I$2:$I$11)):
將(A2=$G$2:$G$11)*(B2=$H$2:$H$11)*($I$2:$I$11)這3個數(shù)組相乘,最后得到的結(jié)果為{0;0;0;0;0;68;0;0;0;0},根據(jù)MAX函數(shù)的原理,找到一組值中的最大值并返回,很顯然,結(jié)果數(shù)組中的最大值為“68”,所以返回的結(jié)果為68,將公式往下填充,即可得到其他單元格的值。
方法七:使用MIN函數(shù) IF函數(shù)。
1、選中E2單元格 -- 在編輯欄中輸入公式“=MIN(IF((A2=$G$2:$G$11)*(B2=$H$2:$H$11),$I$2:$I$11))”-- 按組合鍵“Ctrl Shift Enter”回車 -- 并將公式下拉填充至E11單元格。
2、動圖演示如下。
3、公式解析。
(1)(A2=$G$2:$G$11)*(B2=$H$2:$H$11):
判斷A2單元格的內(nèi)容是否與G2:G11單元格區(qū)域的內(nèi)容相等,如果相等,返回TRUE,否則,返回FALSE。判斷B2單元格的內(nèi)容是否與H2:H11單元格區(qū)域的內(nèi)容相等,如果相等,返回TRUE,否則,返回FALSE。該公式返回一個0和1組成的數(shù)組{0;0;0;0;0;1;0;0;0;0}。
(2)IF((A2=$G$2:$G$11)*(B2=$H$2:$H$11),$I$2:$I$11):
如果(A2=$G$2:$G$11)*(B2=$H$2:$H$11)為TRUE,返回$I$2:$I$11單元格區(qū)域的內(nèi)容,如果為FALSE,返回空。所以該公式返回的結(jié)果為{FALSE;FALSE;FALSE;FALSE;FALSE;68;FALSE;FALSE;FALSE;FALSE}。
(3)=MIN(IF((A2=$G$2:$G$11)*(B2=$H$2:$H$11),$I$2:$I$11)):
MIN函數(shù)是返回一組值中的最小值, 空單元格、邏輯值和文本將被忽略。由第(2)步可知,只有68是數(shù)值,所以返回的結(jié)果就是68,將公式往下填充,即可得到其他單元格的值。
方法八:使用INDEX函數(shù) MATCH函數(shù)。
1、選中E2單元格 -- 在編輯欄中輸入公式“=INDEX($I$2:$I$11,MATCH(A2&B2,$G$2:$G$11&$H$2:$H$11,0))”-- 按組合鍵“Ctrl Shift Enter”鍵回車 -- 并將公式下拉填充至E11單元格。
2、動圖演示如下。
3、公式解析。
(1)$I$2:$I$11:
要返回的結(jié)果所在的單元格區(qū)域。該公式得到一組數(shù)組{80;71;82;84;70;68;90;74;70;89}。
(2)MATCH(A2&B2,$G$2:$G$11&$H$2:$H$11,0):
將A2單元格的姓名與B2單元格的學(xué)號通過用文本連接符合并作為新的查找內(nèi)容,將G列的姓名和H列的學(xué)號通過文本連接符合并作為新的查找區(qū)域,0表示精確查找。該公式返回的結(jié)果為“6”。
(3)=INDEX($I$2:$I$11,MATCH(A2&B2,$G$2:$G$11&$H$2:$H$11,0)):
INDEX函數(shù)的作用是: 返回表或區(qū)域中的值或值的引用。上述公式由第(1)步和第(2)步得到的結(jié)果,可將公式寫成=INDEX({80;71;82;84;70;68;90;74;70;89},6)。6是行號,也就是從在{80;71;82;84;70;68;90;74;70;89}這組值中返回第6行單元格值的引用,所以為68,將公式往下填充,即可得到其他單元格的值。