VLOOKUP函數是Excel中最常用的函數之一,用來查找滿足條件的數據。Match是另一個查找函數,它的工作方式與VLOOKUP在很大程度上是類似的,但是又有自己的特色。在很多場景中,MATCH函數提供了更多的靈活性。
01
MATCH的語法和基本例子
大部分同學都熟悉VLOOKUP的語法,我們就將MATCH函數的語法與VLOOKUP函數做個對比:
通過對比,可以看出以下幾點:
MATCH函數比VLOOKUP少一個參數。
VLOOKUP的第三個參數是規(guī)定了返回查找區(qū)域的第幾列。而MATCH函數沒有。這是因為MATCH函數的作用是返回在查找區(qū)域中的行序號。
參數名稱不同,像第二個參數,VLOOKUP的是table_array,而MATCH的則是lookup_array。
第二個參數除了名稱不同外,在使用上也不同。VLOOKUP中的table_array經常是一個多行多列的矩形區(qū)域,比如:B3:F9。這是因為除了B3:B9用來匹配外,需要返回的值也在后面其他列中。但是MATCH的第二個參數一般都是單列或者單行,比如:B3:B9。這是因為MATCH返回的是行號,所以用不到其他列。
如果仔細分析會發(fā)現盡管MATCH和VLOOKUP函數的最后一個參數都是查找方式,它們也有不小的區(qū)別。
VLOOKUP函數的最后一個參數是這樣的:
這里最后一個參數只能取值TRUE(或1)和FALSE(或0),并且第二個參數table-array首列必須升序排序。
而MATCH的最后一個參數是這樣的:
最后一個參數可以去1,0,-1,其中0跟VLOOKUP中的0或FALSE是一樣的,代表精確匹配。而1是跟VLOOKUP中的1或TRUE一樣的,是近似匹配,此時,第二個參數lookup_array必須以降序排序。
如果最后一個參數取值-1,仍然是近似匹配,但是第二個參數lookup_array必須以升序排序。
下面是一些使用MATCH函數的常規(guī)例子。
假設數據如下:
公式:
=MATCH("b-2",B3:B7,0)
返回4,這是名稱“b-2”在B3:B7中的行序號(第4行)
而公式:
=MATCH(13,C3:C7,1)
返回值是2。這是因為在升序的近似匹配中,需要找到所有比13小的數字中最大的那個數字,就是12,它在第2行。
而公式:
=MATCH(13,C3:C7,-1)
返回錯誤值#N/A。這是因為這個公式要求C列降序排序,但是當前數字是升序排序。
02
MATCH函數的幾個固定用法
下面介紹MATCH函數的幾個固定用法:
01
查找第一個非空單元格
使用公式:
=MATCH("*",B:B,0)
02
查找最后一個非空單元格
使用公式:
=MATCH("*",B:B,-1)
01
升序排序中得到最后一次出現的行號
使用公式:
=MATCH("b",B2:B18,1)
04
定位某一個條件所在的連續(xù)區(qū)域
如果我們希望得到某一個數值出現的連續(xù)區(qū)域:
比如,在上圖中,我們希望得到"b"所在的單元格區(qū)域??梢岳们懊娴膬蓚€用法。(數據必須排序,這樣所有的“b”才能連續(xù)排在一起。)
首先,得到首次出現“b”的行號:
=MATCH("b",B2:B18,0)
然后用下面的公式可以得到首次出現“b”的單元格:
=INDEX(B2:B18,MATCH("b",B2:B18,0))
然后得到最后一次出現“b”的行號:
=MATCH("b",B2:B18,1)
使用下面的公式得到最后一次出現“b”的單元格:
=INDEX(B2:B18,MATCH("b",B2:B18,1))
于是,下面的公式就可以返回“b”所在的連續(xù)區(qū)域:
=INDEX(B2:B18,MATCH("b",B2:B18,0)):INDEX(B2:B18,MATCH("b",B2:B18,1))
可以在公式中使用這個公式,比如:
=COUNTA(INDEX(B2:B18,MATCH("b",B2:B18,0)):INDEX(B2:B18,MATCH("b",B2:B18,1)))
返回值是6
聯系客服