Skip to main content

跨多列的 INDEX 和 MATCH

Author: Amanda Li Last Modified: 2025-05-12

要通過跨多列匹配來查找值,可以使用基於 INDEXMATCH 函數的陣列公式,並結合 MMULTTRANSPOSECOLUMN 來實現。

index match multiple columns 1

如何通過跨多列匹配來查找值?

為了填寫每個學生對應的班級(如上表所示),其中信息分布在多列中,您可以先使用 MMULT、TRANSPOSE 和 COLUMN 函數技巧生成矩陣陣列。然後 MATCH 函數將給出您查找值的位置,並將其傳遞給 INDEX 以在陣列中檢索您正在查找的值。

通用語法

=INDEX(返回範圍,(MATCH(1,MMULT(--(查找範圍=查找值),TRANSPOSE(COLUMN(查找範圍)^0)),0)))

√ 注意:這是一個陣列公式,需要您使用 Ctrl + Shift + Enter 鍵輸入。

  • return_range: 公式用來返回班級信息的範圍。這裡指的是班級範圍。
  • lookup_value: 公式用來查找其對應班級信息的值。這裡指的是給定的名字。
  • lookup_array: 包含查找值的單元格範圍;與查找值進行比較的值範圍。這裡指的是名字範圍。
  • match_type 0: 強制 MATCH 找到等於查找值的第一個值。

要找到 Jimmy 的班級,請在 H5 單元格中複製或輸入以下公式,然後按 Ctrl + Shift + Enter 獲得結果:

=INDEX($B$5:$B$7,(MATCH(1,MMULT(--($C$5:$E$7=G5),TRANSPOSE(COLUMN($C$5:$E$7)^0)),0)))

√ 注意:上面的美元符號 ($) 表示絕對引用,這意味著當您將公式移動或複製到其他單元格時,公式中的名字和班級範圍不會改變。請注意,不應為表示查找值的單元格引用添加美元符號,因為當您將其複製到其他單元格時,希望它是相對的。輸入公式後,向下拖動填充柄以將公式應用於下方的單元格。

index match multiple columns 2

公式解釋

=INDEX($B$5:$B$7,(MATCH(1,MMULT(--($C$5:$E$7=G5),TRANSPOSE(COLUMN($C$5:$E$7)^0)),0)))

  • --($C$5:$E$7=G5): 這個部分檢查範圍 $C$5:$E$7 中的每個值是否等於 G5 單元格中的值,並生成一個 TRUE 和 FALSE 陣列,如下所示:
    {TRUE,FALSE,FALSE;FALSE,FALSE,FALSE;FALSE,FALSE,FALSE}
    雙負號會將 TRUE 和 FALSE 轉換為 1 和 0,產生如下陣列:
    {1,0,0;0,0,0;0,0,0}
  • COLUMN($C$5:$E$7): COLUMN 函數返回範圍 $C$5:$E$7 的列號,形成如下陣列:{3,4,5}
  • TRANSPOSE(TRANSPOSE(COLUMN($C$5:$E$7)^0)^0) = TRANSPOSE(TRANSPOSE({3,4,5}^0)^0): 將次方提升為 0 後,陣列 {3,4,5} 中的所有數字都將轉換為 1:{1,1,1}。TRANSPOSE 函數隨後將列陣列轉換為行陣列,如下所示:{1;1;1}
  • MMULT(MMULT(--($C$5:$E$7=G5),,TRANSPOSE(COLUMN($C$5:$E$7)^0))) = MMULT(MMULT({1,0,0;0,0,0;0,0,0},,{1;1;1})): MMULT 函數返回兩個陣列的矩陣乘積,如下所示:{1;0;0}
  • MATCH(1,MATCH(1,MMULT(--($C$5:$E$7=G5),TRANSPOSE(COLUMN($C$5:$E$7)^0)),0),0) = MATCH(1,MATCH(1,{1;0;0},0),0): match_type 0 強制 MATCH 函數返回陣列 {1;0;0} 中第一個匹配項 1 的位置,即 1
  • INDEX($B$5:$B$7$B$5:$B$7,,,(MATCH(1,MMULT(--($C$5:$E$7=G5),,,TRANSPOSE(COLUMN($C$5:$E$7)^0)),0))) = INDEX($B$5:$B$7$B$5:$B$7,,,1): INDEX 函數返回班級範圍 $B$5:$B$7 中的第 1 個值,即 A

要輕鬆地通過跨多列匹配來查找值,您還可以使用我們專業的 Excel 外掛程式 Kutools For Excel  請參閱此處的說明以完成任務


相關函數

Excel INDEX 函數

Excel INDEX 函數根據範圍或陣列中的指定位置返回顯示值。

Excel MATCH 函數

Excel MATCH 函數在單元格範圍內搜索特定值,並返回該值的相對位置。

Excel MMULT 函數

Excel MMULT 函數返回兩個陣列的矩陣乘積。陣列結果具有與 array1 相同的行數和與 array2 相同的列數。

Excel TRANSPOSE 函數

Excel TRANSPOSE 函數旋轉範圍或陣列的方向。例如,它可以將水平排列在行中的表格旋轉為垂直排列在列中,反之亦然。

Excel COLUMN 函數

COLUMN 函數返回公式出現的列號或返回給定引用的列號。例如,公式 =COLUMN(BD) 返回 56。


相關公式

使用 INDEX 和 MATCH 的多重條件查找

在處理包含多列和行標題的大型數據庫時,總是難以找到符合多個條件的內容。在這種情況下,您可以使用帶有 INDEX 和 MATCH 函數的陣列公式。

使用 INDEX 和 MATCH 的雙向查找

要在 Excel 中跨行和列搜索某個值,或者說在特定行和列的交點查找值,我們可以借助 INDEX 和 MATCH 函數來實現。

使用多重條件查找最接近的匹配值

在某些情況下,您可能需要根據多個條件查找最接近或近似匹配的值。通過結合 INDEX、MATCH 和 IF 函數,您可以快速在 Excel 中完成這一操作。


最佳的辦公生產力工具

Kutools for Excel - 幫助您脫穎而出

? Kutools AI 助手:基於智能執行生成代碼創建自訂公式分析數據並生成圖表調用 Kutools 函數…來徹底改變數據分析方式。
熱門功能查找、標記或識別重複值  |  刪除空行  |  合併列或單元格而不丟失數據  |  四捨五入無需公式 ...
超級 VLookup多條件  |  多值  |  跨多工作表  |  模糊查找...
高級下拉列表簡易下拉列表  |  依賴下拉列表  |  多選下拉列表...
列管理器添加特定數量的列  |  移動列  |  切換隱藏列的可見狀態  比較列以選擇相同和不同的單元格 ...
特色功能網格聚焦  |  設計檢視  |  增強編輯欄  |  工作簿與工作表管理器 | 資源庫(自動文本)  |  日期提取器  |  合併資料  |  加密/解密儲存格  |  按清單發送電子郵件  |  超級篩選  |  特殊篩選(篩選粗體/斜體/刪除線...) ...
頂級 15 種工具集12 個文字工具添加文本刪除特定字符 ...)  |  50+ 圖表 類型甘特圖 ...)  |  40+ 實用 公式基於生日計算年齡 ...)  |  19 個插入工具插入QR碼從路徑插入圖片 ...)  |  12 個轉換工具金額轉大寫匯率轉換 ...)  |  7 個合併與分割工具高級合併行分割Excel單元格 ...)  |  ... 還有更多

Kutools for Excel 擁有超過 300 種功能,確保您需要的功能只需點擊一下即可實現...


Office Tab - 啟用 Microsoft Office(包括 Excel)中的分頁閱讀和編輯功能

  • 一秒鐘內在數十個打開的文檔之間切換!
  • 每天為您減少數百次鼠標點擊,告別滑鼠手。
  • 當查看和編輯多個文檔時,您的工作效率提高 50%。
  • 為 Office(包括 Excel)帶來高效的分頁功能,就像 Chrome、Edge 和 Firefox 一樣。