Skip to main content

從列表中獲取單元格中的第一個匹配值

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

假設您有一個關鍵字列表,要從特定單元格中獲取出現的第一個關鍵字,而該單元格包含其他多個值,則需要使用 INDEX MATCH 公式,並借助 AGGREGATESEARCH 函數來實現。

retrieve first matching value in cell against a list 1

如何從列表中獲取單元格中的第一個匹配值?

要在單元格中根據如上表所示的關鍵字列表獲取第一個匹配的關鍵字,這意味著我們需要執行包含匹配而不是精確匹配。為此,您可以使用 SEARCH 函數將關鍵字在單元格中出現的位置以數字形式輸入到 AGGREGATE 函數中。然後,通過將 AGGREGATE 的 function_num 設置為 15,ref2 參數設置為 1,AGGREGATE 將獲得最小的數字。然後使用 MATCH 定位第一個最小值,並將位置號傳遞給 INDEX 以獲取該位置的值。

通用語法

=INDEX(keyword_rng,MATCH(AGGREGATE(15,6,SEARCH(keyword_rng,lookup_cell),1),SEARCH(keyword_rng,lookup_cell),0))

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

  • keyword_rng: 包含關鍵字的單元格範圍。
  • lookup_cell: 要查找是否包含關鍵字的單元格。

要獲取單元格 B5 中相對於關鍵字列出現的第一個匹配關鍵字,請在單元格 C5 中複製或輸入以下公式,然後按 Ctrl + Shift + Enter 獲取結果:

=INDEX($E$5:$E$7,MATCH(AGGREGATE(15,6,SEARCH($E$5:$E$7,B5),1),SEARCH($E$5:$E$7,B5),0))

√ 注意:上面的美元符號 ($) 表示絕對引用,這意味著當您將公式移動或複製到其他單元格時,公式中的 keyword_rng 不會改變。但是,由於希望 lookup_cell 是動態的,因此沒有添加美元符號。輸入公式後,向下拖動填充柄以將公式應用於下方的單元格。

retrieve first matching value in cell against a list 2

公式的解釋

=INDEX($E$5:$E$7,MATCH(AGGREGATE(15,6,SEARCH($E$5:$E$7,B5)SEARCH($E$5:$E$7,B5),1),SEARCH($E$5:$E$7,B5)SEARCH($E$5:$E$7,B5),0))

  • SEARCH($E$5:$E$7,B5): SEARCH 函數返回範圍 $E$5:$E$7 中每個關鍵字在單元格 B5 中找到時的位置(以數字表示),如果未找到則返回 #VALUE! 錯誤。結果將是類似這樣的陣列:{15;11;#VALUE!}
  • AGGREGATE(15,6,AGGREGATE(15,6,SEARCH($E$5:$E$7,B5),1),1) = AGGREGATE(15,6,AGGREGATE(15,6,{15;11;#VALUE!},1),1): 使用 function_num 為 15選項為 6 的 AGGREGATE 函數將根據 ref2 參數 1 返回陣列中的最小值,同時忽略錯誤值。因此,該片段將返回 11
  • MATCH(MATCH(AGGREGATE(15,6,SEARCH($E$5:$E$7,B5)SEARCH($E$5:$E$7,B5),1),,SEARCH($E$5:$E$7,B5)SEARCH($E$5:$E$7,B5),0),0) = MATCH(MATCH(11,,{15;11;#VALUE!},0),0): match_type 為 0 強制 MATCH 函數執行精確匹配,並返回 11 在陣列 {15;11;#VALUE!} 中的位置。因此,函數將返回 2
  • INDEX($E$5:$E$7,MATCH(AGGREGATE(15,6,SEARCH($E$5:$E$7,B5)SEARCH($E$5:$E$7,B5),1),SEARCH($E$5:$E$7,B5)SEARCH($E$5:$E$7,B5),0)) = INDEX($E$5:$E$7,2): INDEX 函數然後返回範圍 $E$5:$E$7 中的第 2 個值,即 bbb

備註

  • 如果單元格中沒有關鍵字,將返回 #NUM! 錯誤。
  • 該公式不區分大小寫。若要執行區分大小寫的匹配,可以簡單地將 SEARCH 函數替換為 FIND

相關函數

Excel INDEX 函數

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

Excel MATCH 函數

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

Excel SEARCH 函數

在 Excel 中,SEARCH 函數可以幫助您從給定的文本字符串中查找特定字符或子字符串的位置,如下圖所示。本教程將介紹如何在 Excel 中使用此 SEARCH 函數。

Excel AGGREGATE 函數

Excel AGGREGATE 函數返回諸如 SUM、COUNT、SMALL 等計算的聚合結果,並具有忽略錯誤和隱藏行的選項。


相關公式

從單元格中獲取列表中的第一個值

要從特定單元格中獲取列表中列出的第一個關鍵字,而該單元格包含多個值之一,則需要使用一個較為複雜的陣列公式,結合 INDEX、MATCH、ISNUMBER 和 SEARCH 函數。

使用 INDEX 和 MATCH 進行精確匹配

如果您需要找出 Excel 中列出的特定產品、電影或人物等信息,應該充分利用 INDEX 和 MATCH 函數的組合。

檢查單元格是否包含特定文本

這裡的教程提供了一些公式來檢查單元格是否包含特定文本,並返回 TRUE 或 FALSE,如下圖所示,並解釋了參數以及公式的工作原理。

檢查單元格是否包含所有內容

假設在 Excel 中,E 列中有一個值列表,您想檢查 B 列中的單元格是否包含 E 列中的所有值,並返回 TRUE 或 FALSE,如下圖所示。本教程提供了一個公式來解決這個問題。

檢查單元格是否包含其中一項內容

本教程提供了一個公式來檢查單元格是否包含 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 一樣。