MATCH 函數應用非常廣泛,可以在儲存格區域中搜索指定項,然後返回該項在單元格區域中的相對位置。今天咱們就一起認識這個函數,領略它的魅力。
MATCH函數的運算方式
這個函數有三個參數,其中第一個參數是查找物件,第二參數指定查找的範圍或是陣列,第三參數為查找的匹配方式。
第三參數有三個選項: 0 、 1 、 -1 ,分別表示精確匹配、升序查找、降序查找模式。
例 1 :以下公式返回 2 。
=MATCH(" A ",{"C"," A ","B"," A ","D"},0)
第三參數使用 0 ,表示在第 2 個參數的陣列中精確字母 "A" 第一次出現的位置為 2 ,不考慮第 2 次出現位置,且第 2 個參數無需排序。
例 2 :以下公式返回 3 。
=MATCH(6,{1,3,5,7},1)
第三參數使用 1 ,(也可省略),其中第 2 個參數的陣列要求按升序排列,並查找出 小於或等於 6 的最大值 (即陣列中的 5 )在第 3 個元素位置。
例 3 :以下公式返回 2 。
=MATCH(8,{11,9,6,5,3,1},-1)
第三參數使用-1,其中第 2 個參數的陣列要求按降序排列,並查找出 大於或等於 8 的最小值 (即陣列中的 9 )在第 2 個元素位置。
MATCH函數與INDEX函數逆向查詢
實際應用中,只要求返回位置的問題不多,好像 MATCH 函數一時派不上用場了。其實這個函數更多的時候,是與其他引用類函數組合應用,最典型的使用是與 INDEX 函數組合,能夠完成類似 VLOOKUP 函數和 HLOOKUP 函數的查找功能,並且可以實現逆向查詢,即從左向右或是從下向上查詢。
如下圖所示,需要根據 E 列的姓名在 A 列查詢對應的部門。
以前咱們說過,對於這種逆向查詢的數據可以使用 LOOKUP 函數,今天再說說用 INDEX+MATCH 函數實現的方法。
D2 單元格輸入以下公式:
=INDEX(A:A,MATCH(E2,B:B,))
返回查詢結果為採購部。
I NDEX 函數是常用的引用類函數之一,可以在一個區域引用或數位範圍中,根據指定的行號和列號來返回一個值。
MATCH(E2,B:B,) 部分,第三參數簡寫,顯示使用 0 ,即精確匹配方式查詢 E2 單元格姓名“小美”在 B 列的位置,結果為 4 。計算結果用作 INDEX 函數的參數, INDEX 函數再根據指定的行號返回 A 列中對應的值。
使用 INDEX 函數和 MATCH 函數的組合應用來查詢數據,公式看似相對複雜一些,但在實際應用中,更加靈活多變。
查找首次出現的位置
除了使用特定的值作為查詢參數,也可以使用邏輯值進行查詢。以下圖為例,是某公司的銷售數據。需要查詢首次超過平均銷售額的月份。
D2 單元格使用以下數位公式,記得要按
組合鍵:=INDEX(A2:A13,MATCH(TRUE,B2:B13>AVERAGE(B2:B13),))
來看看公式的意思:
1 、 AVERAGE(B2:B13) 部分,用來計算出 B2:B13 單元格的平均值 895.33 。
2 、 B2:B13>AVERAGE(B2:B13) 部分,用 B2:B13 與平均值分別作比較,得到由邏輯值 TRUE 或是 FALSE 組成的記憶體陣列:
{FALSE;FALSE;FALSE;TRUE;…;TRUE}
3 、 MATCH 函數第一參數使用邏輯值 TRUE ,使用精確匹配方式查詢 TRUE 在陣列中第一次出現的位置,結果為 4 。本例中的第一參數也可以寫成“ 1=1 ”, 1=1 返回邏輯值 TRUE ,與直接使用 TRUE 效果相同。
4 、 MATCH 函數的計算結果用作 INDEX 函數的參數, INDEX 函數再根據指定的行號返回 A 列中對應的月份。