Excel INDEX MATCH:基礎與進階查詢
在 Excel 中,精準擷取特定資料往往是日常作業的常見需求。雖然 INDEX 與 MATCH 函數各自都有獨到之處,但兩者一旦結合,便能激發出強大的資料查詢潛力。它們不僅能實現基本的橫向與縱向查詢,更能進一步支援雙向查詢、區分大小寫查詢,以及多重條件查詢等進階功能。相較於 VLOOKUP,INDEX 搭配 MATCH 提供了更靈活、更廣泛的資料查詢選項。在本教學中,我們將深入探索這對函數組合所能實現的各種可能性。
如何在 Excel 中使用 INDEX 函數
Excel 中的 INDEX 函數可傳回指定範圍中特定位置的值,其語法如下:
- array(必要)指您要從中傳回值的範圍。
- row_num(必要,除非存在 )column_num)用於指定陣列的列號。
- column_num(選用,但若省略 )row_num 則為必要):指定陣列中的欄號。
例如,若要得知 Jeff 的分數,也就是名單上的第 6 位學生,您可以這樣使用 INDEX 函數:
=INDEX(C2:C11,6)

√ 注意:範圍 C2:C11 為列出分數的位置,而數字 6 則用來找出第 6 位學生的考試分數。
這裡讓我們做個小測試!針對公式 =INDEX(A1:C1,2),它會傳回什麼值?——沒錯,就是該列中的第 2 個值:出生日期!
現在您已經了解,INDEX 函數能輕鬆應對橫向或縱向的資料範圍。但若要在包含多列與多欄的大型範圍中精準傳回特定值呢?此時,就必須同時指定列號與欄號!舉例來說,若想在整個表格範圍(而非單一欄)中找出 Jeff 的分數,只需在 A2 到 C11 的儲存格區域 中,透過 列號 6 與 欄號 3 即可快速定位他的分數,如下所示:
=INDEX(A2:C11,6,3)

- INDEX 函數可靈活應用於垂直與水平範圍。
- 若同時使用 row_num 與 column_num 引數,則 row_num 會置於 column_num 之前,而 INDEX 函數將傳回指定 row_num 與 column_num 交集處的值。
然而,對於包含多列與多欄的大型資料庫而言,手動輸入確切的列號與欄號顯然相當不便——這正是結合使用 MATCH 函數的最佳時機。
如何在 Excel 中使用 MATCH 函數
Excel 中的 MATCH 函數會傳回指定項目在給定範圍中的位置(以數值表示)。其語法如下:
- lookup_value(必要):指要在 lookup_array 中進行比對的值。
- lookup_array(必要)指您要 MATCH 函數搜尋的儲存格範圍。
- match_type(選用):1、0 或 -1.
- 1(預設值):MATCH 會找出小於或等於 lookup_value 的最大值,且 lookup_array 中的值必須按升冪排序。
- 0,MATCH 會精準找出第一個完全等於 lookup_value 的值。lookup_array 中的值可為任意順序。(當比對類型設為 0 時,還可使用萬用字元。)
- -1時,MATCH 會找出大於或等於 lookup_value 的最小值,且 lookup_array 中的值必須按降冪排序。
例如,若要得知 名稱列表中 Vera 的位置,您可以這樣使用區分公式:
=MATCH("Vera",A2:A11,0)

√ 注意:結果「4」表示名字「Vera」位於清單中的第 4 個位置。
- MATCH 函數傳回的是查閱值在查閱陣列中的位置,而非該值本身。
- MATCH 函數遇到重複值時,會傳回第一個相符的項目。
- 與 INDEX 函數一樣,MATCH 函數同樣適用於垂直與水平範圍。
- MATCH 函數不區分大小寫。
- 若 lookup_value 為文字格式,請用引號括起來。
- 若 lookup_value 在 lookup_array 中找不到,將傳回 #N/A 錯誤。
現在我們已經掌握了 Excel 中 INDEX 與 MATCH 函數的基本用法,接下來就捲起袖子,準備將這兩個強大函數結合運用吧!
如何在 Excel 中結合使用 INDEX 與 MATCH
請參閱下方範例,了解如何結合 INDEX 與 MATCH 函數:
若要找出 Evelyn 的分數,且已知考試分數位於第 3 欄,我們可 使用 MATCH 函數自動判斷列的位置,無需手動計數;接著再運用 INDEX 函數,輕鬆擷取 所識別列與第 3 欄交叉處的值:
=INDEX(A2:C11,MATCH("Evelyn",A2:A11,0),3)

由於這個公式看起來可能有點複雜,讓我們一步步拆解其中的每個部分。

此 INDEX 公式包含三個引數:
- row_num:MATCH("Evelyn",A2:A11,0)會傳回「Evelyn」在範圍 A2:A11 中的列位置,供 INDEX 使用,即5。
- column_num:3 指定 INDEX 在陣列中定位分數的第 3 欄。
- array:A2:C11 用於指定 INDEX 函數在特定列與欄的交集處傳回對應的值,範圍為 A2 到 C11. 最終,我們取得結果 90.
在上述公式中,我們使用了一個硬編碼值 「Evelyn」。然而在實際應用中,硬編碼值並不實用,因為每次查詢不同資料(例如另一位學生的分數)時,都必須手動修改公式。在這類情境下,我們可以透過儲存格參照建立動態公式。例如在此案例中,我會 將「Evelyn」改為 F2:
=INDEX(A2:C11,MATCH(F2,A2:A11,0),3)(AD) 用 Kutools 輕鬆查詢:免輸入公式!
Kutools for Excel 的 高級 LOOKUP提供多種查詢工具,滿足您的各種需求。無論是執行多重條件查詢、跨多個工作表搜尋,還是一對多查找,只需幾次點擊,高級 LOOKUP就能輕鬆簡化整個流程。探索這些功能,了解 高級 LOOKUP如何徹底改變您與 Excel 資料互動的方式——告別記憶複雜公式的困擾!

Kutools for Excel-透過超過 300 項必備工具強化 Excel,讓您工作更快速、更輕鬆,並運用 AI 功能實現更聰明的資料處理,大幅提升生產力!立即取得
使用 INDEX 與 MATCH 執行雙向查詢
在先前的範例中,我們已知欄號,並運用區分公式找出列號。但如果連欄號也不確定呢?
在此情況下,我們可透過兩個 MATCH 函數執行雙向查詢(又稱矩陣查詢):一個用來找出列號,另一個用來確定欄號。例如,若要查詢 Evelyn 的分數,請使用以下公式:
=INDEX(A2:C11,MATCH("Evelyn",A2:A11,0),MATCH("Score",A1:C1,0))

- 第一個區分公式在 A2:A11 清單中找出 Evelyn 的位置,並將 5 作為列號提供給 INDEX。
- 第二個區分公式用來判斷分數所在的欄位,並傳回 3 作為欄號,提供給 INDEX 函數使用。
- 此公式簡化為 =INDEX(A2:C11,5,3),而 INDEX 函數傳回 90.
使用 INDEX 與 MATCH 執行向左查詢
現在,假設您需要查詢 Evelyn 所屬的班級。您可能已經發現,班級欄位位於姓名欄位的左側——這種情況已超出另一個強大的 Excel 查詢函數 VLOOKUP 的處理範圍。
事實上,能夠執行向左查詢正是 INDEX 與 MATCH 組合勝過 VLOOKUP 的一大優勢。
若要找出 Evelyn 的班級,請使用下列公式:在 B2:B11 中搜尋 Evelyn,並 從 A2:A11 中擷取對應的值。
=INDEX(A2:A11,MATCH("Evelyn",B2:B11,0))

注意:您可以透過從右到左查找Kutools for Excel 的輕鬆功能,對特定值執行向左查詢,只需點擊幾下即可。若要使用此功能,請切換至 Excel 中的Kutools 選項卡,然後按一下高級 LOOKUP >從右到左查找群組中的公式。 group.

Kutools for Excel-集結超過 300 項必備工具,全面強化 Excel 功能,助您工作更快速、更輕鬆!結合 AI 智能技術,實現更聰明的資料處理,大幅提升生產力。立即取得
使用 INDEX 與 MATCH 執行區分大小寫的查詢
MATCH 函數本身不區分大小寫。然而,當您需要公式能區分大小寫時,可透過加入 EXACT 函數來強化功能。將 MATCH 與 EXACT 結合至 INDEX 公式中,即可輕鬆實現區分大小寫的精準查詢,如下所示:
- array 是指您要從中傳回值的範圍。
- lookup_value 指的是要在 lookup_array 中進行比對的值(區分大小寫)。
- lookup_array 指的是您要提供給 MATCH 函數、用來與 lookup_value 進行比較的儲存格範圍。
例如,若要得知 JIMMY 的考試分數,請使用以下公式:
=INDEX(C2:C11,MATCH(TRUE,EXACT("JIMMY",A2:A11),0))
√ 注意:這是陣列公式,在 Excel 365、Excel 2021 及更新版本以外的版本中,皆需按下 Ctrl+Shift+Enter 才能輸入。

- EXACT 函數會將 「JIMMY」與清單 A2:A11 中的值逐一比對,並區分大小寫:若兩個字串完全相符(包含大小寫),EXACT 便傳回 TRUE;否則傳回 FALSE。因此,我們得到一個由 TRUE 與 FALSE 值組成的陣列。
- 接著,MATCH 函數會取得該陣列中 第一個 TRUE 值的位置,結果應為 10.
- 最後,INDEX 會根據 MATCH 所提供的位置,取出陣列中第 10 個位置的值。
注意事項:
- 請務必正確輸入公式:按下 Ctrl + Shift + Enter;若您使用的是 Excel 365、Excel 2021 或更新版本,此時只需按下Enter 即可。
- 上述公式僅在單一清單 C2:C11 中搜尋。若您想在多欄多列的範圍(例如 )A2:C11)中搜尋,則需同時提供欄位與對應的列數給 INDEX:
-
=INDEX(A2:C11,MATCH(TRUE,EXACT("JIMMY",A2:A11),0),3) - 在此修訂後的公式中,我們使用 MATCH 函數在範圍 A2:A11 中搜尋「JIMMY」(區分大小寫),找到相符項目後,便從範圍 A2:C11 的第 3 欄傳回對應值。
使用 INDEX 與 MATCH 尋找最接近的相符值
在 Excel 中,當您需要從資料集中找出最接近特定數值的項目時,結合使用 INDEX 與 MATCH 函數,並搭配 ABS 與 MIN 函數,將能輕鬆達成目標。
- array 是指您要從中傳回值的範圍。
- lookup_array 指的是您用來尋找與 lookup_value 最接近相符項目的值範圍。
- lookup_value 是指要尋找其最接近相符項目的值。
例如,若要找出 誰的分數最接近 85,請使用下列公式:在 C2:C11 中搜尋最接近 85 的分數,並 從 A2:A11 中擷取對應的值。
=INDEX(A2:A11,MATCH(MIN(ABS(C2:C11-85)),ABS(C2:C11-85),0))
√ 注意:這是陣列公式,在 Excel 365、Excel 2021 及更新版本以外的版本中,皆需按下 Ctrl+Shift+Enter 才能正確輸入。

- ABS(C2:C 11-85) 會計算範圍 C2:C11 中每個數值與 85 的絕對差異,並產生一個絕對差異陣列。
- MIN(ABS(C2:C 11-85)) 用於找出絕對差異陣列中的最小值,也就是最接近 85 的數值。
- MATCH 函數 MATCH(MIN(ABS(C2:C 11-85)),ABS(C2:C 11-85),0) 會找出絕對差異陣列中最小絕對差異的位置,結果應為 10.
- 最後,INDEX 會從清單 A2:A11 中取出對應於範圍 C2:C11 內最接近分數 85 的值。
注意事項:
- 請務必正確輸入公式:按下 Ctrl + Shift + Enter;若您使用的是 Excel 365、Excel 2021 或更新版本,則只需按下Enter 即可。
- 若有同分情況,此公式將傳回第一個相符項目。
- 若要找出最接近平均分數的值,請將公式中的 85 替換為 AVERAGE(C2:C11)。
使用 INDEX 與 MATCH 執行多重條件查詢
若要找出符合多個條件的值(需跨兩欄或更多欄進行搜尋),請使用下列公式。此公式可讓您在不同欄位中指定多項條件,執行多重條件查詢,精準找出符合所有指定條件的目標值。
√ 注意:這是陣列公式,需按下 Ctrl+Shift+Enter 輸入。輸入後,編輯欄中將自動出現一對大括號。
- array 是指您要從中傳回值的範圍。
- (lookup_value=lookup_array)代表單一條件,用於檢查指定的 lookup_value 是否與 lookup_array 中的值相符。
例如,若要找出 A 班 Coco 的分數(其出生日期為 7/2/2008),您可以使用下列公式:
=INDEX(D2:D11,MATCH(1,(G2=A2:A11)*(G3=B2:B11)*(G4=C2:C11),0))

注意事項:
- 此公式無需硬式編碼數值,只需調整儲存格 G2、G3 與 G4 中的數值,即可輕鬆取得不同條件下的分數!
- 除 Excel 365、Excel 2021 或更新版本外,您需按下 Ctrl + Shift + Enter 來輸入此公式;在這些版本中,只需按下 Enter 即可。
若您經常因忘記使用 Ctrl + Shift + Enter 完成公式而得到錯誤結果,建議改用以下稍複雜、但只需按下 Enter 鍵即可正確執行的公式:=INDEX(D2:D11,MATCH(1,INDEX((G2=A2:A11)*(G3=B2:B11)*(G4=C2:C11),0,1),0)) - 這些公式不僅複雜,還難以記憶!想簡化多重條件查詢,卻不想手動輸入繁瑣公式?立即試用 Kutools for Excel 的 Lookup 多條件查找功能!安裝 Kutools 後,只需切換至 Excel 中的 Kutools 選項卡,點擊 高級 LOOKUP下的 Lookup 多條件查找(位於)公式群組中)即可輕鬆完成。
Kutools for Excel -整合超過 300 項必備工具,大幅提升 Excel 效能,讓您工作更快、更輕鬆!結合 AI 功能,實現更聰明的資料處理與更高生產力!立即取得
使用 INDEX 與 MATCH 在多個欄位中執行查詢
假設您面對的是包含多個資料欄位的表格。其中第一欄作為關鍵欄位,用以分類其他欄位中的資料。若要為特定項目判斷其所屬的類別或分類,您必須在資料欄位中進行搜尋,並將結果與參考欄位中的對應關鍵值建立關聯。
例如,在下方表格中,我們該如何使用 INDEX 與 MATCH 將學生 Shawn 與其所屬班級配對?雖然可以透過公式達成,但此公式相當冗長,不僅難以理解,更遑論記憶與輸入。
=IFERROR(INDEX($A$2:$A$4,MATCH(IF(SUM(MMULT(--($B$2:$E$4=G2),TRANSPOSE(COLUMN($B$2:$E$4)^0)))>0,1,-1),MMULT(--($B$2:$E$4=G2),TRANSPOSE(COLUMN($B$2:$E$4)^0))^0,0)), "")

此時,Kutools for Excel 的索引並匹配多列功能便派上用場了!它能簡化整個流程,讓您快速輕鬆地將特定項目與對應類別配對。若要啟用這項強大工具,毫不費力地將 Shawn 與其班級配對,只需 下載並安裝 Kutools for Excel 增益集,並依照下列步驟操作:
- 選取要顯示相符班級的目的儲存格。
- 在 Kutools 選項卡上,點選公式助手> 查找和引用> 索引並匹配多列。

- 在彈出的對話方塊中,執行下列操作:
- 按一下
Lookup_col 旁的第一個按鈕,即可選取包含您要傳回關鍵資訊(例如班級名稱)的欄位。(此處僅能選取單一欄。) - 按一下
Table_rng 旁的第二個按鈕,即可選取要與所選 Lookup_col 中的值(例如學生姓名)進行比對的儲存格。 - 按一下
Lookup_value 旁的第三個按鈕,即可選取包含您欲比對班級之學生姓名(本例為 Shawn)的儲存格。 - 點擊確定。

- 按一下
結果
Kutools 已自動產生公式,您會立即在目標儲存格中看到 Shawn 所屬的班級名稱。

注意:若要試用索引並匹配多列功能,您的電腦上必須已安裝 Kutools for Excel。若您尚未安裝,請立即下載並安裝,讓 Excel 今天就變得更聰明!
使用 INDEX 與 MATCH 查找第一個非空白值
若要從欄或列中擷取第一個非空白值(忽略錯誤值),可使用基於 INDEX 與 MATCH 函數的公式。但若您不希望忽略範圍內的錯誤值,請加入 ISBLANK 函數。
- 取得欄或列中忽略錯誤的第一個非空白值:
-
=INDEX(B4:B15,MATCH(TRUE,INDEX((B4:B15<>0),0),0)) - 取得欄或列中包含錯誤的第一個非空白值:
-
=INDEX(B4:B15,MATCH(FALSE,ISBLANK(B4:B15),0))
注意事項:
- 上述為陣列公式,您必須使用 Ctrl+Shift+Enter 輸入,但 Excel 365、Excel 2021 及更新版本除外。
- 請參閱此教學以獲得詳細說明:取得欄或列中的第一個非空白值。
使用 INDEX 與 MATCH 查找第一個數值
若要從欄或列中擷取第一個數值,請使用基於 INDEX、MATCH 與 ISNUMBER 函數的公式。
=INDEX(B4:B15,MATCH(TRUE,ISNUMBER(B4:B15),0))

注意事項:
- 這是陣列公式,您必須使用 Ctrl+Shift+Enter 輸入,但 Excel 365、Excel 2021 及更新版本除外。
- 請參閱此教學以獲得詳細說明:取得欄或列中的第一個數值。
使用 INDEX 與 MATCH 查找最大值或最小值的關聯項目
若您需要在指定範圍內擷取與最大值或最小值相關的值,可搭配使用 MAX 或 MIN 函數與 INDEX 及 MATCH 函數。
- 使用 INDEX 與 MATCH 擷取與最大值相關聯的值:
- =INDEX(array, MATCH(MAX(lookup_array), lookup_array, 0))
- 使用 INDEX 與 MATCH 擷取與最小值相關聯的值:
- =INDEX(array, MATCH(MIN(lookup_array), lookup_array, 0))
- 上述公式中有兩個引數:
- array 指的是您要從中提取相關資訊的範圍。
- lookup_array 代表一組用來檢查或搜尋特定條件(例如最大值或最小值)的數值。
例如,若要找出誰的分數最高,請使用下列公式:
=INDEX(A2:A11,MATCH(MAX(C2:C11),C2:C11,0))

- MAX(C2:C11) 會在範圍 C2:C11 中搜尋最高值,即 96.
- 接著,MATCH 函數會找出陣列 C2:C11 中最高值的位置,結果應為 1.
- 最後,INDEX 會取出清單 1 中第 A2:A11 個值。
注意事項:
- 若出現多個最大值或最小值(如上方範例中兩位學生取得相同最高分),此公式將傳回第一個符合的結果。
- 若要找出誰的分數最低,請使用下列公式:
=INDEX(A2:A11,MATCH(MIN(C2:C11),C2:C11,0))
提示:自訂您的 #N/A 錯誤訊息
當您在 Excel 中使用 INDEX 與 MATCH 函數時,若找不到相符的結果,便可能出現 #N/A 錯誤。例如,在下方表格中,當您試圖查找名為 Samantha 的學生分數時,由於資料集中並無該使用者,系統就會顯示 #N/A 錯誤。

為提升試算表的使用者體驗,您可透過 IFNA 函數包裝您的 INDEX 區分公式,自訂此錯誤訊息:
=IFNA(INDEX(C2:C11,MATCH(F2,A2:A11,0)),"Not found")

注意事項:
- 您可以將 「Not found」替換為任何自選文字,輕鬆打造專屬錯誤訊息!
- 如果您想處理所有錯誤(而不僅是 #N/A),請考慮使用 IFERROR 函數,而非 IFNA:
=IFERROR(INDEX(C2:C11,MATCH(F2,A2:A11,0)),"Not found")請注意,不建議隱藏所有錯誤,因為這些錯誤可作為公式中潛在問題的警示。
以上即為 Excel 中 INDEX 與 MATCH 函數的完整教學內容,希望對您有所幫助!若您想探索更多 Excel 實用技巧,請點此處,立即瀏覽我們超過數千篇的精彩教學文章!
最佳辦公室生產力工具
Kutools for Excel -助您脫穎而出
| 🤖 | KUTOOLS AI 助手:以「智慧執行 | 產生程式碼| 建立自訂公式 | 分析資料與產生圖表| 呼叫增強函數…… |
| 熱門功能:尋找、標示或標記重複值 | 刪除空白行 | 合併列或儲存格而不遺失資料 | 不使用公式的四捨五入…… | |
| 超級 VLookup:多重條件 | 多重數值 | 跨多個工作表 | 模糊查找…… | |
| 進階下拉列表:簡易下拉式清單 | 相依性下拉式清單 | 多重選擇下拉式清單…… | |
| 欄位管理員:新增指定數量的欄位 | 移動欄位 | 切換隱藏欄位的可見狀態 |比較欄位以選擇相同/不同單元格…… | |
| 精選功能:網格聚焦 | 設計視圖 | 增強編輯欄 | 工作簿與工作表管理員|資源庫(自動文字)| 日期提取 | 合併工作表 | 加密/解密儲存格 | 依清單傳送電子郵件 | 超級篩選 | 特殊篩選(篩選粗體儲存格/斜體/刪除線……) ...... | |
| 頂尖 15 工具組:12 文字工具(添加文本,刪除特定字符……)| 50+ 圖表 類型(甘特圖……)| 40+ 實用公式(基於生日計算年齡……)| 19 插入工具(插入二維碼,從路徑插入圖片……)| 12 轉換工具(金額轉大寫,匯率轉換……)| 7 合併和拆分工具(高級合併行,拆分 Excel 儲存格……)|……還有更多 |
Kutools for Excel 提供超過 300 項功能,確保您所需的功能觸手可及……
Office Tab -在 Microsoft Office(含 Excel)中啟用分頁式閱讀與編輯
- 一秒內在數十份開啟的文件間切換!
- 每天為您減少數百次滑鼠點擊,告別滑鼠手。
- 當您同時檢視與編輯多份文件時,生產力提升 50%。
- 為 Office(包含 Excel)帶來如 Chrome、Edge 和 Firefox 般高效的分頁功能。


