跨多列的 INDEX 和 MATCH
要通過跨多列匹配來查找值,可以使用基於 INDEX 和 MATCH 函數的陣列公式,並結合 MMULT、TRANSPOSE、和 COLUMN 來實現。
如何通過跨多列匹配來查找值?
為了填寫每個學生對應的班級(如上表所示),其中信息分布在多列中,您可以先使用 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($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 MATCH 函數在單元格範圍內搜索特定值,並返回該值的相對位置。
Excel MMULT 函數返回兩個陣列的矩陣乘積。陣列結果具有與 array1 相同的行數和與 array2 相同的列數。
Excel TRANSPOSE 函數旋轉範圍或陣列的方向。例如,它可以將水平排列在行中的表格旋轉為垂直排列在列中,反之亦然。
COLUMN 函數返回公式出現的列號或返回給定引用的列號。例如,公式 =COLUMN(BD) 返回 56。
相關公式
在處理包含多列和行標題的大型數據庫時,總是難以找到符合多個條件的內容。在這種情況下,您可以使用帶有 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 一樣。