🐟 請您尊重本網站的智慧財產權,如有任何引用,請註明出處:Dr. Fish 漫游社會統計。(文章發表日期)。文章名稱。文章網址
如何使用Excel的INDEX和MATCH函數向左尋找資料
微軟的Excel內建不少資料尋找的函數,VLOOKUP即是其中一個很強大的函數。不過,這個函數的功能雖然很強大,卻有幾項缺點,其中一點便是只能執行由左向右的資料尋找。若想由右向左尋找資料,須合併使用INDEX和MATCH兩個函數。關於VLOOKUP函數的使用方法,請參考如何使用Excel的VLOOKUP函數尋找資料。
INDEX函數可用來尋找資料裡的一個特定數值,而MATCH函數可用來查詢一個特定數值所在的位置,2個函數合併起來可執行更高階的資料搜尋,其中一個便是從右向左的資料尋找。下面將先分別介紹這2個函數的使用時機和操作方法,再示範如何合併這2個函數來執行從右向左的資料搜尋。
INDEX函數的使用時機和方法
INDEX函數可以藉由一個數值所在的「列」和「欄」的索引編號,從資料裡找到這個數值。這個函數的語法為INDEX(array, row_num, [column_num]),括弧裡3個引數的意義分別如下:
- array:資料的範圍,可以是一列或一欄資料,也可以是一整組資料。
- row_num:從上往下數,欲尋找數值所在的列編號。
- column_num:從左往右數,欲尋找數值所在的欄編號。
如果資料範圍只有一列或一欄,也就是一維的(one-dimensional)範圍,可以省略相對應的列或欄索引編號的引數。換句話說,若資料範圍只有一列,可以不寫出列編號的引數;若資料範圍只有一欄,可以不寫出欄編號的引數。
舉例來看,假設有如下表的10位學生資料,包含他們的名字、生理性別、班級、社會統計期中考和期末考成績。在10個學生的名字(NAME)裡,若想知道從上面數下來第5位學生的名字,可以在任一空白的儲存格裡輸入=INDEX(A2:A11, 5)。
這語法要求INDEX函數在儲存格A2到A11的範圍裡傳回從上面數下來第5列的數值,因為使用的資料範圍只位於一欄,所以語法裡第3個欄編號的引數可以省略。語法輸入完成後,按下Enter,會傳回Kathy。

更進一步來看,如果資料不再只有一欄或一列,而是有數個欄和數個列,也就是二維的(two-dimensional)範圍,語法裡資料的儲存格範圍、列的編號和欄的編號等3個引數都必須清楚地寫出來,INDEX函數才會正確地執行資料搜尋。
舉例來說,若想查詢學生名字(NAME)為Kathy的社會統計期中考成績(MIDTERM),可在剛才輸出Kathy的儲存格下方的空白儲存格裡輸入=INDEX(A2:E11, 5, 4)。
這語法要求INDEX函數在儲存格A2到E11的資料範圍裡,傳回從上面數來第5列且從左邊數來第4欄的數值。語法輸入完成後,傳回數值53,這就是學生名字為Kathy的社會統計期中考成績。

看到這裡,您可能會有一個很大的疑問,當資料很龐大的時候,要如何知道想要尋找數值的列編號和欄編號呢?如果自己能夠數出來列和欄編號時,也不須使用軟體來尋找資料了呀。為了解答這疑惑,就須運用到MATCH函數的功能,下面就來介紹這個函數的使用時機和方法。
MATCH函數的使用時機和方法
MATCH函數用來查詢資料裡一個數值所在的相對位置,而不是用來尋找數值本身,所以會傳回想要尋找數值所在的列編號或欄編號。這個函數的語法為MATCH(lookup_value, lookup_array, [match_type]),括弧裡3個引數的意義分別如下:
- lookup_value:想要查詢的數值,可以是數字或文字,而且這數值一定要出現在第2個引數的資料範圍內。
- lookup_array:想要尋找的資料範圍,也就是儲存格的範圍。
- match_type:想要查詢的數值是否完全吻合資料範圍裡的數值,有0、1、-1三個數字選擇。若在語法裡省略這個引數,預設值為1。這3個數字代表的情況分別為:
- 數字0:代表完全吻合,若資料範圍裡有多個完全吻合的數值,會傳回第1個完全吻合數值的相對位置。
- 數字1:此為預設值,代表約略吻合,會傳回等於或小於欲查詢數值的資料裡最大數值之相對位置,須先將資料範圍裡的數值從小到大排序後再執行搜尋。
- 數字-1:代表約略吻合,會傳回等於或大於欲查詢數值的資料裡最小數值之相對位置,須先將資料範圍裡的數值從大到小排序後再執行搜尋。
同樣利用上面10位學生的資料,若要尋找學生名字為Kathy的社會統計期中考成績,從上面INDEX函數的使用時機和方法已經知道這過程需要列的編號和欄的編號,而列和欄的編號即可透過MATCH函數來取得。
首先,找2個空白的儲存格輸入NAME和row_num,分別代表學生名字和列的編號。在NAME旁邊的空白儲存格(H2)輸入Kathy,然後在row_num旁邊的儲存格輸入=MATCH(H2, A2:A11, 0)。
這語法要求MATCH函數在儲存格A2到A11的資料範圍裡,尋找名字完全吻合Kathy的值。語法輸入完成後,傳回數值5。這個數字指出Kathy是從第1個名字數下來的第5個名字,也就是位於資料的第5列。

接著,再找另外2個空白的儲存格輸入VARIABLE和column_num,分別代表想查詢的變項名稱(也就是欄的名稱)和欄的編號。在VARIABLE旁邊的空白儲存格(H5)輸入MIDTERM,然後在column_num旁邊的空白儲存格輸入=MATCH(H5, A1:E1, 0)。
這語法要求MATCH函數在儲存格A1到E1的資料範圍裡,尋找名稱完全吻合MIDTERM的變項。語法輸入完成後,傳回數值4。這個數字指出MIDTERM是從最左邊的變項向右數過來的第4個變項,也就是位於資料的第4欄。

從上面的操作過程可以看出,利用MATCH函數可以很簡單地查詢到一個數值所在的相對位置,而這樣的功能剛好可以輔助INDEX函數語法裡列編號和欄編號的取得。
INDEX和MATCH函數的合併使用
因為MATCH函數可用來查詢資料裡一個數值的相對位置,也就是列的編號和欄的編號,而INDEX函數需要數值的所在位置來找到一個特定的數值,所以2個函數可以合併使用。
上面已經分別示範2個函數的用法,這裡將它們合併使用。同樣利用10位學生資料的例子,且要尋找名字為Kathy的社會統計期中考成績。找3個空白的儲存格輸入NAME、VARIABLE和SCORE,分別代表學生的名字、想查詢的變項和成績。在NAME旁邊的儲存格輸入Kathy,並在VARIABLE旁邊的儲存格輸入MIDTERM。
把運用MATCH函數取得列編號和欄編號的2個語法帶入至INDEX函數語法裡的第2個引數(列編號)和第3個引數(欄編號)的位置,也就是在SCORE旁邊的儲存格輸入如下的語法:
=INDEX(A2:E11, MATCH(H3, A2:A11, 0), MATCH(H4, A1:E1, 0))
語法輸入完成後,按下Enter,傳回數值53。這數值就是學生名字為Kathy的社會統計期中考成績,而這樣的語法操作和上面INDEX函數的使用時機和方法裡直接輸入列編號和欄編號的語法操作所得到的結果是相同的。

在這個例子裡,也可以使用VLOOKUP函數來尋找名字為Kathy的社會統計期中考成績。在任2個空白的儲存格輸入NAME和MIDTERM,分別代表學生名字和期中考成績。在NAME旁邊的儲存格輸入Kathy,並在MIDTERM旁邊的儲存格輸入=VLOOKUP(H3, A2:E11, 4, FALSE)。
這語法要求VLOOKUP函數在儲存格A2到E11的範圍裡,找到名字完全吻合Kathy且從最左邊欄往右數過來第4欄的期中考成績。這語法傳回數值53,與上面利用INDEX和MATCH函數所得到的結果是相同的。

當執行從左向右的資料尋找時,不論是VLOOKUP函數或合併INDEX和MATCH函數都可以。但若想執行從右向左的資料尋找,則只能利用INDEX和MATCH函數,下面來示範操作方法。
合併INDEX和MATCH函數執行向左搜尋
由於VLOOKUP函數僅能執行從左向右的資料搜尋,所以若要進行從右向左的資料尋找,須合併利用INDEX和MATCH函數。
假設有10位學生的資料,您發現有一位學生的社會統計期中考成績只有36分,想知道是哪一位學生。在任2個空白的儲存格輸入MIDTERM和NAME,分別代表期中考成績和學生名字。在MIDTERM旁邊的儲存格(H3)輸入36,然後在NAME旁邊的儲存格輸入如下的語法:
=INDEX(A2:A11, MATCH(H3, D2:D11, 0))
這個語法指出從儲存格D2到D11的期中考成績裡找到完全吻合36分的相對位置(也就是這成績位在從第1個成績數下來的第幾列),然後再向左從儲存格A2到A11的範圍裡找到成績36分的學生名字。語法輸入完成後,傳回名字Carol。

除了上面的語法外,還可使用另一種語法,但是比較複雜一點。在NAME右邊的儲存格輸入=INDEX(A2:E11, MATCH(H3, D2:D11, 0), MATCH(G4, A1:E1, 0)),這語法利用全部的資料,先從儲存格D2到D11找到成績36分所在的列編號,再從儲存格A1到E1找到NAME所在的欄編號,最後傳回學生名字Carol。

若想要進一步尋找社會統計期中考36分學生所在的班級,可在NAME下方的儲存格輸入CLASS,代表學生的班級。這裡使用上面提到的2種語法裡比較簡單的第1種語法,在CLASS右邊的儲存格輸入=INDEX(C2:C11, MATCH(H3, D2:D11, 0))。
這語法指出先從儲存格D2到D11的範圍裡找到成績完全吻合36分的位置,再向左從儲存格C2到C11的範圍裡尋找學生所在的班級,最後傳回班級A。透過這樣的方法,只要在MIDTERM右邊的儲存格輸入您想查詢的成績,即可出現學生的名字和所在班級。

從上面的說明可以發現,透過INDEX和MATCH函數的合併使用可以彌補VLOOKUP函數無法執行從右向左搜尋的缺點。雖然這2個函數合併使用的語法看起來有點嚇人,但在分別瞭解2個函數各自的用法後,即可明瞭這2個函數合併起來的功能很強大,能夠執行進階的資料搜尋,是資料管理的一個實用工具。
除了合併運用INDEX和MATCH函數外,若您有2021年後的Excel版本,也可以使用XLOOKUP函數來執行從右向左的資料搜尋,且操作方法更為簡單。關於XLOOKUP函數的詳細操作方法,請參考如何使用Excel的XLOOKUP函數尋找資料。
以上為本篇文章對如何使用Excel的INDEX和MATCH函數向左尋找資料的介紹,希望透過本篇文章,您瞭解了這2個函數的各自使用時機和方法,也學會了如何合併這2個函數來執行從右向左的資料搜尋。
若您喜歡這篇文章,請將本網站加入書籤,作為您的學習資源,並持續回訪本網站喔!另外,您也可以在Facebook和Twitter上找到我們喲!