【Excel Function】INDEX、MATCH、二維資料尋找 (2D Data Search)

  • Post author:
Home » 莫非工具 » Excel » 【Excel Function】INDEX、MATCH 二維資料尋找

大家在工作時一定遇過類似下面這種資料要去處理,上方和左方有兩個軸向資料,而中間交叉點就會同時符合上方和左方對應到的值,這種資料我們稱為二維(矩陣、陣列)資料。

2d-data-table
二維資料

「尋找資料」,大家第一個想到的一定就是VLOOKUP和HLOOKUP。而這邊我要教大家更實用的兩個函數: INDEXMATCH 。這兩個函數可以說是功能強大,又常常出現在同事傳給來的Excel中,有沒有彷彿看到職場救星的出現呢?

現在請加緊腳步,跟著我一起看下去。

Excel 範例檔案下載:Excel-INDEX-MATCH.xlsx

延伸閱讀:【Excel】雙條件、多條件查詢(Multiple Conditions)

MATCH

=MATCH(a, b, c)
a:
尋找值
b:
資料來源
c:判斷模式
(1 或者 省略, 0, -1)

回傳
該資料對應的索引值(index)

excel-match-1
MATCH-column
c判斷模式
1 或者 省略MATCH 會尋找小於或等於 a 的最大值。 b 引數內的值必須以遞增次序排列:…-2,-1,0,1,2, …,A-Z,FALSE,TRUE。
0MATCH 會尋找完全等於 a 的第一個值。 b 引數內的值可以依任意次序排列。
-1MATCH 會尋找大於或等於 a 的最大值。 b 引數內的值必須以遞減順序排列:TRUE、FALSE、Z-A、…2、1、0、-1、-2、…。

MATCH 簡單來說就是:查詢資料對應的索引值(index)。這裡我用簡單的欄位尋找來做示範,我的目標是找出「小莫」這個值在該筆資料(每列為一筆資料)的欄位序號(第幾欄),並填入[D13]

excel-match-1
=MATCH(尋找值,資料來源,判斷模式)

首先在[B13]填入小莫,而[D13]使用函數。

第一個參數尋找值,要尋找「小莫」,因此要填入 B13。

第二個參數資料來源,資料表為左邊[B5]到[F5],在這用手 key 或用拉的填入 B5:F5。

第三個參數判斷模式,依照上方表格去使用符合需求的規則,這裡要完全一樣,所以這裡填入 0。最後只要按下 Enter 就大功告成,經過公式運算,回傳值為 2,但表「小莫」是該筆資數據第 2 欄的資料,到這邊有沒有理解 MATCH 這個函數的使用方法,是不是非常簡單。

這邊給各位一道簡單的練習:垂直方向的 MATCH ,其實函數使用方法是一樣的,大家不妨可以自己試試看,同時檢測自己有沒有學會。目標是找出「小莫」這個值在多筆資料(每列為一筆資料)中,是第幾筆(第幾列)資料,並填入[D14],可以在下方留言和我討論。

excel-match-2
MATCH-row

INDEX(單組)

=INDEX(a, b, c)
a:
資料來源
b:
第幾列
c:
第幾欄

回傳
該索引(index)對應的儲存格(cell)值

excel-index-2
INDEX

剛剛學會查詢資料對應的序號值,這個稱為索引(index)。相信各位看到索引的英文就明白 INDEX 的概念了,沒錯!就是用索引值去查出資料表的對應資料。簡單來說 INDEXMATCH 其實是兩個互為相反的函數。我們來練習一下這個函數:找出資料表中第3列第2欄的值,並填入[E13]

excel-index-2
=INDEX(資料來源,第幾列,第幾欄)

首先在[C13]填入 3,[D13]填入 2,分別代表第 3 列,第 2 欄,而[E13]使用函數。

第一個參數資料來源,資料表為左邊[B3]到[F10],在這用手key或用拉的填入B3:F10。

第二個參數第幾列,就是一開始填到[C13]的值,所以這個參數填入 C13。

第三個參數第幾欄,就是一開始填到[D13]的值,所以這個參數填入 D13。

按下 Enter 後,我們可以看到函數的回傳值就是資料表中的第 3 列,第 2 欄:小莫。

前面學會 MATCH 之後,有沒有覺得 INDEX 特別簡單呢?而這個強大的函數當然也可以處理只有一個維度的資料,下面我就直接示範,一個是橫向資料,另一個是直向資料,有不懂的問題,都可以在下方留言和我討論。

excel-index-3
excel-index-4

INDEX(多組)

=INDEX((a,b,c), d, e, f)
a:
第一組資料來源
b:
第二組資料來源
c:
第三組資料來源
d第幾列
e第幾欄
f:第幾組

回傳
尋找指定組,對應索引(index)的儲存格(cell)值

PS:可多組不一定只能 3 組

excel-index-multi
INDEX-multi

這邊我將資料分成三組,依序為理學院3名、醫學院2名、生物資源暨農學院3名,目標是回傳每個組別第3列、第2欄的值,並依序填入[E13]、[E14]、[E15]

excel-index-multi
=INDEX(多筆資料來源,第幾列,第幾欄,第幾組)

第一個參數多組資料來源,這裡我使用了三組資料,所以使用了括弧 ” () ” 把三組資料分別用逗點 ” , ” 分開,分別是第一組 B3:F5、第二組 B6:F7、第三組 B8:F10。

第二個參數第幾列、第三個參數第幾欄,上面練習了許多次,相信大家也都很熟悉了,就分別填入 3 和 2 。

第四個參數第幾組,依照自己想要尋找的組別去填入對應的組數,第一組就填 1,第二組填 2,依此類推。而結果也就如預期的回傳了我們想要的答案。

這裡有一個重點,圖中的[E14],這格的公式要回傳,第 2 組第 3 列的第 2 欄,但是資料中第 2 組並沒有第 2 列,因此回傳了一個#REF!,這個符號在這代表:INDEX的行或列引用不正確。


INDEX + MATCH(單條件查詢)

=INDEX(a, MATCH(b, c, 0))
a:資料來源
b:
尋找值
c:
參照資料

excel-index-match-single
INDEX+MATCH-single

之前學 VLOOKUP 的時候就遇過一個問題,不知道大家還有沒有印象:VLOOKUP這個函數只能去比對第一欄的資料,現在大家知道如何使用 INDEX MATCH,這個問題就可以迎刃而解了。

這邊我們要用 MATCH 函數去回傳索引(index),並將索引值放入 INDEX 函數內,使之回傳對應的值

目標是回傳小莫的體重,並填入[E13]

excel-index-match-single
=INDEX(資料來源,MATCH(尋找值,參照資料,0))

第一個參數資料來源,我們要找體重,所以這裡要選取全部學生的體重,E3:E10。

第二個參數尋找值,這個參數是屬於MATCH函數內,如果忘記MTACH要怎麼使用我們可以回去看一下上面的內容,要回傳「小莫」的體重,所以這個參數我們選取預先填好小莫的[D13]。

第三個參數參照資料,這裡的目的是要讓MATCH去回傳對應的索引(index)值,所以我們選取全部的人名,C3:C10。

因第一參數和第三參數的索引值相等,這邊我們運用這個特性連結 INDEXMATCH 這兩個函數,來完成我們的目標:回傳小莫的體重,並填入[E13]


INDEX + MATCH(多條件查詢)

=INDEX(a, MATCH(b, c, 0))
a:資料來源
b:
尋找值&尋找值&…
c:
參照資料&參照資料&…

excel-index-match-multi
INDEX+MATCH-multi

如果要尋找的資料有多個條件,各位會怎麼去做呢?這邊提供一個很簡單的方法:字串組合,這裡用到一個很簡單的符號 ” & ” ,使用這個符號就可以將儲存格中的值以字串的方式連接,如下圖示範。而這種小技巧就可以輕輕鬆鬆地解決多個條件的篩選尋找。

excel-str-and
string-and

這裡來簡單的練習,目標是回傳心理學系,體重48的人是?,並填入[E13]

excel-index-match-multi
=INDEX(資料來源,MATCH(尋找值&尋找值,參照資料&參照資料,0))

第一個參數資料來源,目標要回傳學生,所以這裡要選取全部的學生,D3:D10。

第二個參數尋找值 & 尋找值,要尋找心理學系的學生,且體重為48,這裡使用我們上方所提到的字串組合,第一個是心理系,第二個是體重為48,用 ” & ” 將兩者連起來,C13&D13。

第三個參數參照資料 & 參照資料,這裡的目的是要讓MATCH去回傳對應的索引(index)值,而要去對應的資料也需要經過字串組合的處理,C3:C10&F3:F10。這樣代表各別對應字串合併,第一個和第一個合併,第二個和第二個合併:C3和F3合併、C4和F4合併…依此類推至C10和F10合併。

這樣就完成我們的目標了,回傳心理學系,體重48的人,並填入[E13]。可能有一點小複雜,但是不要忘記下方的神祕小空間。留下你的疑問,我們一起討論。


INDEX + MATCH(矩陣、陣列、二維查詢)

=INDEX(a, MATCH(b, c, 0),MATCH(d, e, 0))
a:資料來源
b:
列-尋找值
c:
列-資料來源
d:欄-尋找值
e欄-資料來源

excel-index-match-2d
INDEX-MATCH-2D

上面每一項如果大家都可以很清楚地學會,知道每個函數的用法和規則,我相信文章一開始的二維資料尋找就不是問題了,讓我們直接進入目標:回傳出男方(上方)金牛座♉與女方(左方)雙魚座♓的組合關係,填入[C17]。這裡一樣使用 INDEX 函數,去回傳指定行、列索引值(index)所對應的資料,和上面的用法一樣,使用 MATCH 去找出索引值。

excel-index-match-2d
=INDEX(資料來源,MATCH(列-尋找值,列-資料來源,0),MATCH(欄-尋找值,欄-資料來源,0))

第一個參數資料來源,就是整張資料表:C3到N14,$C$3:$N$14。這裡我有使用 $ 來鎖定資料來源,通常我們在使用 Excel 要去對照或者處理資料時,資料來源大多數強況價都不會改變,因此都會使用 $ 這個符號,去鎖定欄和列。當表格使用到自動填滿功能時,資料來源才不會跟著改變。

第二個參數列-尋找值,列(row)和欄(col)不要搞反了,可以用英文去記憶,這裡是要尋找列,資料表左邊的軸,這裡是代表女方的星座,所以選取[D17]。

第三個參數列-資料來源,列的對應資料,資料表左方的軸,這裡是代表女生的星座,$B$3:$B$14。

第四個參數欄-尋找值,這裡是要尋找欄(行),資料表上方的軸,這裡是代表男方的星座,所以選取[C17],男方的星座是金牛座。

第五個參數欄-資料來源,欄的對應資料,資料表上方的軸,這裡是代表男生的星座,$C$2:$N$2。

這樣子就完成一直困擾著大家的二維資料尋找。當然這不是唯一個方法,可以用全新的函數 XLOOKUP,當然也可以使用 VLOOKUPHLOOKUP 同時搭配 MATCH 來使用,大家也可以來挑戰看看喔,下方我也會公布我的作法給大家參考。

Excel 範例檔案下載:Excel-INDEX-MATCH.xlsx

excel-vlookup-hlookup-index-match-2d
VLOOKUP-HLOOKUP-INDEX-MATCH-2D

更多 Excel 文章請至 文章導覽 尋找,也可利用上方「搜尋(Search...)」功能
有任何莫非工具的問題,歡迎至「表單」提問

Excel 是不是很容易
和墨菲一起用 Excel 把工作變簡單

This Post Has 2 Comments

歡迎留言,與我們分享你的看法!