日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

excel匹配_Excel中的数据匹配和查找

發布時間:2023/12/18 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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中的数据匹配和查找的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。