excel匹配_Excel中的数据匹配和查找
在Excel中,提供了多個可以用來進行數據匹配和查找的函數:HLOOKUP、INDEX、LOOKUP、MATCH和VLOOKUP等。其中使用最廣的就是VLOOKUP,這篇文章就從VLOOKUP開始,介紹幾種常見的匹配和查找數據的方式。
文章分成兩部分:
第一部分介紹,VLOOKUP的基本使用 和?替代方法;
第二部分介紹,VLOOKUP無法實現的一些功能:多列匹配,向左查詢匹配,匹配時區分大小寫,返回最后一個匹配的數據而不是第一個。
第二部分會使用到數組公式(有興趣的可以先點擊查看)。
VLOOKUP的基本使用
先看一個示例,在B2:D9區域有一張員工薪資表,G2單元格可以輸入員工的First Name,希望可以在G3單元格查找出相應員工的具體薪資。
這時候可以使用VLOOKUP函數來進行查找匹配。
使用之前先簡單回顧一下VLOOKUP函數語法:
VLOOKUP (value, table, col_index,[range_lookup])
參數:
value -查找的值(需要在下面參數table的第一列中查找)。
table - 查找的區域。
col_index - 返回值的區域中的列號。
range_lookup -(可選)近似匹配 (TRUE) 或完全匹配 (FALSE),默認為近似匹配。
上面的示例中可以在G3單元格中輸入如下公式:
=VLOOKUP(G2,B3:D9,3,FALSE)G2是要查找的內容,B3:D9是查找區域(注意第一列一定是First Name),3是Salary在查找區域的列號,False表示精確匹配。
替代方式
除了VLOOKUP之外,也可以使用其他函數來代替,比如INDEX和MATCH的函數組合。
下面公式和之前使用VLOOKUP的效果是一樣的。
=INDEX(D3:D9,MATCH(G2,B3:B9,0))其中MATCH(G2,B3:B9,0)返回John在B3:B9中的行數4,然后INDEX(D3:D9,4)返回D3:D9中的第4行數據。
MATCH函數的最后一個參數0表示精確匹配。
多列匹配
常見的匹配是一列匹配,如果將上面的示例修改一下,用戶同時提供First Name和Last Name,并且根據這兩個值來同時匹配Salary。這時候應該怎么實現?
一個簡單的方式是建一個輔助列,將First Name和Last Name合并,然后使用之前的公式就可以了。
如果不希望使用輔助列,就必須用到數組公式,什么是數組公式可以參考之前的文章。
我們來分步解釋一下如何實現。
第一步,先將G2和G3單元格的數據合并。
=G2&G3第二步,查找合并后的數據在查找區域中處于第幾行,這里要使用MATCH函數,公式輸入之后需要同時按下CTRL + SHIFT + ENTER。
{=MATCH(G2&G3,B3:B9&C3:C9,0)}解釋:公式中B3:B9&C3:C9是一個數組,存在于Excel的內存中:
{ “EmilySmith”; “JamesAnderson”; “MiaClark”; “JohnLewis”; “JessicaWalker”; “MIAReed”; “RichardLopez”}將G2&G3的結果“JohnLewis”在這個數組進行精確匹配,將返回結果4(數組中的第4個元素)。
第三步,使用INDEX返回查找到的行號中的具體數值
{=INDEX(D3:D9,MATCH(G2&G3,B3:B9&C3:C9,0))}從意義上看,這個公式跟之前替代VLOOKUP的INDEX、MATCH組合公式是一樣的。
向左查詢
使用VLOOKUP函數時,函數本身的實現方式會帶來一些不便,比如VLOOKUP始終時向右查詢,被查找的數據必須在查找區域的第一列中。如果需要向左做查找該怎么辦?
比如,需要在G列填寫Product信息,但是ID不在查找區域的第一列。
這時候可以使用INDEX和MATCH的組合公式,然后將公式拖動到G列其他行:
=INDEX($A$3:$A$6,MATCH(F3,$C$3:$C$6,0))注意公式中“$”的使用。
區分大小寫
VLOOKUP函數本身不區分大小寫。比如下面的例子,查找區域中有“Mia”和“MIA”,當G2中輸入“MIA”時會精確匹配到“Mia”。
如果需要區分大小寫,又該如何操作?
第一步,找到一個可以區分大小寫的函數EXACT。
=EXACT(G2,B5)//False=EXACT(G2,B8)//True第二步,使用MATCH函數查找出對應行號(注意這里使用數組公式)。
{=MATCH(TRUE,EXACT(G2,B3:B9),0)}解釋:
EXACT(G2,B3:B9)返回一個數組,并保存在excel內存中。
{FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE}MATCH(TRUE,EXACT(G2,B3:B9),0),將返回數組中第一個TRUE的位置6。
第三步,使用INDEX返回查找到的行號中的具體數值
{=INDEX(D3:D9,MATCH(TRUE,EXACT(G2,B3:B9),0))}跟之前的操作類似,這里就不作解釋了。
精確匹配最后一項
VLOOKUP中如果查詢區域有多個可以匹配到的數據,那么將會返回第一個匹配的數據。
如果希望返回最后一個匹配的數據,又該怎么實現?
還是之前的例子,這里把“Mia”改成了“MIA”,查找區域有兩個“MIA”(第5行和第8行),正常VLOOKUP會返回第5行數據。
這里我們可以使用LOOKUP函數來實現,同時還可以了解LOOKUP函數本身的一些特性。
先看實現公式(不是數組公式):
=LOOKUP(2,1/(B3:B9=G2),D3:D9)解釋:
B3:B9=G2返回一個數組:
{FALSE; FALSE; TRUE; FALSE; FALSE; TRUE; FALSE}接下來使用1來除以這個這個數組,執行除法的時候“TRUE”表示1,“FALSE”表示0。
1/{0;0;1;0;0;1;0}1除以1返回1,1除以0返回錯誤#DIV/0,所以最后返回的數組為:
{#DIV/0!;#DIV/0!;1;#DIV/0!;#DIV/0!;1;#DIV/0!}現在我們來看最外面層LOOKUP的含義:
首先是在上述的數組中查找數字2,看上去很讓人困惑,因為數組中只有1和錯誤,沒有2。不要擔心,其實我們就是用數字2來讓查詢掃描到數組的最一位。
LOOKUP函數會自動忽略數組中的錯誤,它會掃描數組中的所有1,當它達到數組末尾時,將會后退到最后一個有效值——最后一個1。
找到最后一個1的位置后,就可以從D3:D9中匹配相應的數值。
參考資料:
https://www.excel-easy.com/examples/vlookup.html
https://www.excel-easy.com/examples/case-sensitive-lookup.html
https://www.excel-easy.com/examples/left-lookup.html
https://www.excel-easy.com/examples/two-column-lookup.html
https://www.exceltip.com/excel-formula-and-function/vlookup-to-find-last-matching-value.html
https://exceljet.net/how-to-lookup-first-and-last-match
更多內容可關注公眾號:
總結
以上是生活随笔為你收集整理的excel匹配_Excel中的数据匹配和查找的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dataframe保存为txt_竟然可以
- 下一篇: win7纯净版下载csdn_win10原