今天說一個(gè)查找定位函數(shù)match的用法,它是按特定的順序搜索特定的項(xiàng),然后返回該項(xiàng)在此區(qū)域或數(shù)組中的相對(duì)位置,經(jīng)常與其他查找引用函數(shù)結(jié)合使用,比如index,vlookup,offset等。 -01- 函數(shù)說明 它的函數(shù)結(jié)構(gòu)如下圖所示,可以看到一共有3個(gè)參數(shù)。 lookup_value 必需。要在lookup_array中匹配的值。可以為值(數(shù)字、文本或邏輯值)或?qū)?shù)字、文本或邏輯值的單元格引用。 lookup_array 必需。要搜索的單元格區(qū)域或數(shù)組。此參數(shù)單元格區(qū)域必須為一行或者一列,數(shù)組的話必須為一維數(shù)組,否則返回錯(cuò)誤值。 match_type 可選。數(shù)字 -1、0 或 1。match_type 參數(shù)指定Excel如何將 lookup_value 與 lookup_array 中的值匹配。此參數(shù)的默認(rèn)值為 1。也就是查找匹配的方式。
MATCH返回匹配值在lookup_array中的位置而非其值本身。例如,MATCH("b",{"a","b","c"},0)返回2,即“b”在數(shù)組 {"a","b","c"} 中的相對(duì)位置。而且當(dāng)?shù)?參數(shù)為0,即精確查找時(shí),第一參數(shù)支持通配符。 -02- 示例解釋 在C1單元格中輸入如下公式,結(jié)果返回3。意思是在A1:A7這個(gè)區(qū)域中查找5,找到后返回5在這個(gè)區(qū)域中的相對(duì)位置,也就是3。發(fā)現(xiàn)有2個(gè)5,但只返回第一個(gè)5的位置。第3參數(shù)為0,是精確查找。如果在這個(gè)區(qū)域中沒有5,會(huì)返回錯(cuò)誤值,如下第2圖所示。 在C1單元格中輸入如下公式,結(jié)果返回3。此時(shí)第3參數(shù)為1,是模糊查找,查找區(qū)域必須為升序排列。在A1:A7這個(gè)區(qū)域中查找5,找不到,就找比它小的最大值4,返回4在這個(gè)區(qū)域中的位置也就是3。 在C1單元格中輸入如下公式,結(jié)果返回6。此時(shí)第3參數(shù)為-1,是模糊查找,查找區(qū)域必須為降序排列。在A1:A7這個(gè)區(qū)域中查找9,找不到,就找比它大的最小值10,返回10在這個(gè)區(qū)域中的位置也就是6。 -03- 具體應(yīng)用 1.計(jì)算不重復(fù)的個(gè)數(shù) 在A列中有一些字母,求不重復(fù)的有幾個(gè)。公式為C8=SUM(--(MATCH(A8:A15,A8:A15,)=ROW(A8:A15)-7))。這里是match的數(shù)組用法。MATCH(A8:A15,A8:A15,)這部分是查找A8:A15中每一個(gè)單元格在A8:A15這個(gè)區(qū)域中的位置,形成一個(gè)數(shù)組。與ROW(A8:A15)-7這個(gè)數(shù)組進(jìn)行比較,相等的就是第一次出現(xiàn)的,也就是不重復(fù)的值。最后將其求和。 2.將不重復(fù)的值提取出來 還是上面那個(gè)題目,現(xiàn)在要求將不重復(fù)的值一一提取出來。這里方法有2種,公式都比較長(zhǎng)。第一個(gè)公式為D8=IFERROR(INDEX(A:A,SMALL(IF(MATCH(A$8:A$15,A$8:A$15,)=ROW(A$8:A$15)-7,ROW(A$8:A$15)),ROW(A1))),"")。第1個(gè)題目,我們已經(jīng)將不重復(fù)的值進(jìn)行比較了,如果相等就是不重復(fù)的?,F(xiàn)在如果相等就讓它返回它的行號(hào),然后用small這個(gè)函數(shù)從小到大提取不重復(fù)值第一次出現(xiàn)的行號(hào),最后用index返回不重復(fù)的值。iferror用來規(guī)避錯(cuò)誤值。 第二個(gè)公式為E8=IFERROR(INDEX(A:A,SMALL(IF(COUNTIF(OFFSET(A$8,,,ROW($1:$8)),A$8:A$15)=1,ROW(A$8:A$15)),ROW(A1))),"")。這個(gè)公式比較復(fù)雜,用到了offset的多維引用,也是為了返回不重復(fù)值第一次出現(xiàn)的行號(hào),后面一樣是用small和index。最開始是想要用公式=COUNTIF(A$8:A8,A8)來確定每個(gè)單元格的值是第幾次出現(xiàn)的,所有第一次出現(xiàn)的就是不重復(fù)的值。后來發(fā)現(xiàn)這個(gè)公式用數(shù)組不好實(shí)現(xiàn),就想到用offset試一下,結(jié)果用offset要用到多維引用,而且還實(shí)現(xiàn)了。當(dāng)然也歸功于countif,它能對(duì)多維引用進(jìn)行降維計(jì)算。 好了,今天雖說講了match這個(gè)函數(shù)的基本用法,但是舉得例子比較深?yuàn)W,我覺得對(duì)于初學(xué)者不太合適,抱歉了。 |
|