Skip to main content

Kutools for Office — 一套工具,五種功能。完成更多工作。

如何在 Excel 的 3 列中找到共同值?

Author Xiaoyang Last modified

在 Excel 中處理數據時,經常需要比較列表以識別共享或重複的條目。雖然比較兩列以查找共同值是一項常見任務,但有時您需要確定哪些值同時出現在三列中。例如,在合併調查數據、合併銷售記錄或分析多個列表中的重複條目時,準確提取所有三列中存在的項目集合非常重要,如下方截圖所示。本文介紹了幾種實用的方法來解決 Excel 中的這個問題,讓您能夠高效且可靠地精確定位三列中的共同值——無論您偏好使用公式還是 VBA。

find common values in 3 columns

使用陣列公式在 3 列中找到共同值

VBA 宏提取三個列中都存在的值


arrow blue right bubble 使用陣列公式在 3 列中找到共同值

要查找並提取三列中的共同值,您可以使用專門設計用於搜索所有選定範圍內出現的項目的陣列公式。這在不希望依賴其他 Excel 增益集或外部工具的數據集中特別有用。

將此陣列公式輸入到您想要顯示第一個共同值的空白單元格中:

=LOOKUP("zzz",CHOOSE({1,2},"",INDEX(A$2:A$10,MATCH(0,COUNTIF(E$1:E1,A$2:A$10)+IF(IF(COUNTIF(B$2:B$8,A$2:A$10)>0,1,0)+IF(COUNTIF(C$2:C$9,A$2:A$10)>0,1,0)=2,0,1),0))))

如何使用此陣列公式:

  • 在選定的單元格中輸入公式後,按 Shift + Ctrl + Enter(不只是 Enter)。Excel 會將公式括在大括號中以表示這是陣列公式。
  • 將公式向下拖動直到出現空白單元格。這將列出三列共有的所有值,空白單元格則表示不再有匹配項。

Find common values in3 columns with array formula

注意事項和參數解釋:

  1. 如果您偏好另一種陣列公式,這個公式也可以返回所有三列中存在的唯一值:
    =INDEX($A$2:$A$10, MATCH(0, COUNTIF($E$1:E1, $A$2:$A$10)+IF(IF(COUNTIF($B$2:$B$8, $A$2:$A$10)>0,1,0)+IF(COUNTIF($C$2:$C$9, $A$2:$A$10)>0,1,0)=2,0,1),0))
    同樣,請記住按下 Shift + Ctrl + Enter 在輸入或粘貼公式後。
  2. 在這些公式中:
    • A2:A10, B2:B8, C2:C9 是您希望比較的三列中的數據範圍。
    • E1 指的是公式開始位置上方的單元格(用於排除邏輯)。調整單元格引用以匹配您的實際數據範圍以及您希望結果出現的位置。
  3. 這些方法對於適度的數據集效果良好,但由於陣列公式的計算需求,對非常大的數據量可能會變慢。
  4. 請小心避免中途調整源範圍,因為這可能導致不準確的結果或公式錯誤。
  5. 如果結果包含空白行,則表示所有共同值已被提取,剩餘單元格沒有進一步的交集。
a screenshot of kutools for excel ai

使用 Kutools AI 解鎖 Excel 的魔法

  • 智能執行:執行單元格操作、分析數據並創建圖表——所有這些都由簡單的指令驅動。
  • 自訂公式:生成量身定制的公式,簡化您的工作流程。
  • VBA 編碼:輕鬆編寫和實現 VBA 代碼。
  • 公式解釋:輕鬆理解複雜的公式。
  • 文本翻譯:打破電子表格中的語言障礙。
通過人工智能工具增強您的 Excel 能力。立即下載,體驗前所未有的效率!

VBA 宏提取三個列中都存在的值

如果您更喜歡自動化的方法,而不需輸入或複製複雜的公式,您可以使用 Excel VBA 遍歷數據並僅輸出在每個三列中存在的那些值。這種方法對於非常大的數據集或處理動態範圍時特別有用,因為 VBA 在處理重複性任務和自定義條件方面效率更高。

1. 點擊 開發工具 > Visual Basic 打開 VBA 編輯器(如果開發工具標籤不可見,您可通過文件 > 選項 > 自定義功能區啟用它)。

2. 在 VBA 編輯器中,點擊 插入 > 模組 來創建一個新模組。然後將以下代碼粘貼到模組窗口中:

Sub FindCommonValuesThreeColumns()
    Dim dict1 As Object
    Dim dict2 As Object
    Dim dict3 As Object
    Dim resultDict As Object
    Dim rngA As Range
    Dim rngB As Range
    Dim rngC As Range
    Dim cell As Range
    Dim outputRow As Long
    Dim key As Variant
    
    On Error Resume Next
    
    Set dict1 = CreateObject("Scripting.Dictionary")
    Set dict2 = CreateObject("Scripting.Dictionary")
    Set dict3 = CreateObject("Scripting.Dictionary")
    Set resultDict = CreateObject("Scripting.Dictionary")

    ' Prompt the user to select the three column ranges
    Set rngA = Application.InputBox("Select the first column range", "KutoolsforExcel", Selection.Address, Type:=8)
    Set rngB = Application.InputBox("Select the second column range", "KutoolsforExcel", Selection.Address, Type:=8)
    Set rngC = Application.InputBox("Select the third column range", "KutoolsforExcel", Selection.Address, Type:=8)

    ' Store all unique values from each column into corresponding dictionaries
    For Each cell In rngA
        If Not dict1.exists(cell.Value) And cell.Value <> "" Then
            dict1.Add cell.Value, 1
        End If
    Next

    For Each cell In rngB
        If Not dict2.exists(cell.Value) And cell.Value <> "" Then
            dict2.Add cell.Value, 1
        End If
    Next

    For Each cell In rngC
        If Not dict3.exists(cell.Value) And cell.Value <> "" Then
            dict3.Add cell.Value, 1
        End If
    Next

    ' Check which values exist in all three dictionaries
    For Each key In dict1.keys
        If dict2.exists(key) And dict3.exists(key) Then
            resultDict.Add key, 1
        End If
    Next

    ' Output result to next empty column on the active sheet
    outputRow = 1
    For Each key In resultDict.keys
        Cells(outputRow, Columns.Count).End(xlToLeft).Offset(0, 1).Value = key
        outputRow = outputRow + 1
    Next

    MsgBox "Common values extracted next to your data.", vbInformation, "KutoolsforExcel"
End Sub

3. 在 VBA 窗口中,選擇模組後,按 F5 或點擊運行(▶)按鈕來執行代碼。系統將依次提示您選擇要比較的三列範圍。每次提示時,使用鼠標突出顯示適當的單元格。

4. 宏將處理您的選擇並將所有存在於三列中的值輸出到當前數據集右側的下一空列中,從第一行開始。

這種方法在處理大型或動態數據集時非常有效,並且可以輕鬆擴展到四列或更多列,只需複製字典邏輯即可。切記在運行宏之前保存您的工作簿,因為未保存的更改無法撤銷。

最佳 Office 生產力工具

🤖 Kutools AI 助手:以智能執行為基礎,革新數據分析 生成程式碼 創建自訂公式 分析數據並生成圖表 調用 Kutools 增強函數
熱門功能查找、選取項目的背景色或標記重複值刪除空行合併列或單元格且不遺失數據四捨五入(免公式)...
高級 LOOKUP多條件 VLookup多值 VLookup多表查找模糊查找...
高級下拉列表快速創建下拉列表 依賴型下拉列表 多選下拉列表...
列管理器添加指定數量的列移動列切換隱藏列的顯示狀態比較區域及列...
精選功能網格聚焦 設計檢視 增強編輯欄 工作簿及工作表管理器 資源庫(快捷文本) 日期提取器 合併資料 加密/解密儲存格 按列表發送電子郵件 超級篩選 特殊篩選(篩選粗體/傾斜/刪除線...)...
15 大工具集12 項文本工具添加文本刪除特定字符…)50+ 儀表 類型甘特圖等)40+ 實用 公式基於生日計算年齡等)19 項插入工具插入QR码根據路徑插入圖片等)12 項轉換工具金額轉大寫匯率轉換等)7 項合併與分割工具高級合併行分割儲存格等)...及更多
使用 Kutools,語言任你選 — 支援英語、西班牙語、德語、法語、中文及超過40 種語言!

運用 Kutools for Excel,全面提升您的 Excel 技能,體驗前所未有的高效。 Kutools for Excel 提供超過300 項進階功能,讓您提升工作效率、節省時間。 點此尋找您最需要的功能...


Office Tab 為 Office 帶來分頁介面,讓您的工作更加輕鬆簡單

  • 在 Word、Excel、PowerPoint 中啟用分頁編輯與閱讀
  • 在同一視窗的新分頁中打開與創建多份文件,而非開啟新視窗。
  • 提升您的生產力50%,每日可幫您減少數百次鼠標點擊!

所有 Kutools 外掛,一次安裝

Kutools for Office 套裝整合了 Excel、Word、Outlook 和 PowerPoint 的外掛,外加 Office Tab Pro,非常適合需要跨 Office 應用程式協同作業的團隊。

Excel Word Outlook Tabs PowerPoint
  • 全合一套裝 — Excel、Word、Outlook及 PowerPoint 外掛 + Office Tab Pro
  • 一鍵安裝,一份授權 — 幾分鐘完成設置(支援 MSI)
  • 協同運作更順暢 — Office 應用間無縫提升生產力
  • 30 天全功能試用 — 無需註冊、無需信用卡
  • 最超值 — 一次購買,節省單獨外掛費用