如何在 Excel 中比較兩個儲存格中的逗號分隔值並返回重複或唯一值?
如下方截圖所示,有兩列——列1和列2,每列中的每個儲存格都包含以逗號分隔的數字。要將列1中的逗號分隔數字與列2中同一行的儲存格內容進行比較,並返回所有重複或唯一的值,該怎麼辦呢?
本教程提供了兩種方法來幫助您完成此任務。
使用公式比較兩個儲存格中的逗號分隔值並返回重複或唯一值
本節提供了兩個公式,幫助比較兩個儲存格中的逗號分隔值並返回它們之間的重複或唯一值。
注意:以下公式僅適用於 Excel for 365。如果您使用的是其他版本的 Excel ,請嘗試使用下面的 VBA 方法。
以上述兩列為例,要將列1中的逗號分隔數字與列2中同一行的逗號分隔數字進行比較並返回重複或唯一值,請按照以下步驟操作。
返回重複值
1. 選擇一個儲存格以輸出兩個指定儲存格之間的重複數字(這些儲存格包含逗號分隔的數字),在此情況下,我選擇了 D2 儲存格,然後輸入以下公式並按下 Enter 鍵。選擇公式儲存格並向下拖動其 自動填充控制柄,以獲取其他行中儲存格之間的重複數字。
=LET(x, TRANSPOSE(TEXTSPLIT(TEXTJOIN(", ",TRUE,A2:B2), ", ")),y,UNIQUE(x),z,UNIQUE(x,,1), TEXTJOIN(", ",TRUE,IF(ISERROR(MATCH(y,z,0)),y, "")))
返回唯一值
要返回同一行中兩個指定儲存格之間的唯一數字(這些儲存格包含逗號分隔的數字),以下公式可以提供幫助。
1. 選擇一個儲存格以輸出唯一數字,在此情況下,我選擇了 E2 儲存格,然後輸入以下公式並按下 Enter 鍵。選擇公式儲存格並向下拖動其 自動填充控制柄,以獲取其他行中儲存格之間的唯一數字。
=TEXTJOIN(", ",TRUE,UNIQUE(TRANSPOSE(TEXTSPLIT(TEXTJOIN(", ",TRUE,A2:B2), ", ")),,1))
注意:

使用 Kutools AI 解鎖 Excel 的魔法
- 智能執行:執行單元格操作、分析數據並創建圖表——所有這些都由簡單的指令驅動。
- 自訂公式:生成量身定制的公式,簡化您的工作流程。
- VBA 編碼:輕鬆編寫和實現 VBA 代碼。
- 公式解釋:輕鬆理解複雜的公式。
- 文本翻譯:打破電子表格中的語言障礙。
使用 VBA 比較兩個帶有逗號分隔值的列並返回重複或唯一值
本節提供的自定義函數可幫助比較兩個指定儲存格中的逗號分隔值並返回它們之間的重複值或唯一值。請按照以下步驟操作。
以上述相同的例子為例,要將列1中的逗號分隔數字與列2中同一行的逗號分隔數字進行比較並返回重複或唯一值,請嘗試本節中的自定義函數。
1. 在打開的工作簿中,按 Alt + F11 鍵打開 Microsoft Visual Basic for Applications 窗口。
2. 在 Microsoft Visual Basic for Applications 窗口中,點擊 插入 > 模組,並將以下 VBA 代碼複製到模組(代碼)窗口中。
VBA 代碼:比較兩個儲存格中的逗號分隔值並返回重複/唯一值
Private Function COMPARE(Rng1, Rng2 As Range, Op As Boolean)
'Updated by Extendoffice 20221019
Dim R1Arr As Variant
Dim R2Arr As Variant
Dim Ans1 As String
Dim Ans2 As String
Dim Separator As String
Dim d1 As New Dictionary
Dim d2 As New Dictionary
Dim d3 As New Dictionary
Application.Volatile
Separator = ", "
R1Arr = Split(Rng1.Value, Separator)
R2Arr = Split(Rng2.Value, Separator)
Ans1 = ""
Ans2 = ""
For Each ch In R2Arr
If Not d2.Exists(ch) Then
d2.Add ch, "1"
End If
Next
If Op Then
For Each ch In R1Arr
If d2.Exists(ch) Then
If Not d3.Exists(ch) Then
d3.Add ch, "1"
Ans1 = Ans1 & ch & Separator
End If
End If
Next
If Ans1 <> "" Then
Ans1 = Mid(Ans1, 1, Len(Ans1) - Len(Separator))
End If
COMPARE = Ans1
Else
For Each ch In R1Arr
If Not d1.Exists(ch) Then
d1.Add ch, "1"
End If
Next
For Each ch In R1Arr
If Not d2.Exists(ch) Then
If Not d3.Exists(ch) Then
d3.Add ch, "1"
Ans2 = Ans2 & ch & Separator
End If
End If
Next
For Each ch In R2Arr
If Not d1.Exists(ch) Then
If Not d3.Exists(ch) Then
d3.Add ch, "1"
Ans2 = Ans2 & ch & Separator
End If
End If
Next
If Ans2 <> "" Then
Ans2 = Mid(Ans2, 1, Len(Ans2) - Len(Separator))
End If
COMPARE = Ans2
End If
End Function
3. 將代碼粘貼到模組(代碼)窗口後,轉到點擊工具 > 引用 以打開引用 - VBAProject 窗口,勾選Microsoft Scripting Runtime 選項,然後點擊確定 按鈕。
4. 按 Alt + Q 鍵關閉 Microsoft Visual Basic for Applications 窗口。
5. 現在,您需要分別應用兩個函數來從兩個逗號分隔值的儲存格中返回重複和唯一值。
返回重複值
選擇一個儲存格以輸出重複數字,在此示例中,我選擇了 D2 儲存格,然後輸入以下公式並按下 Enter 鍵以獲取 A2 和 B2 儲存格之間的重複數字。
選擇公式儲存格並向下拖動其自動填充控制柄,以獲取其他行中儲存格之間的重複數字。
=COMPARE(A2,B2,TRUE)
返回唯一值
選擇一個儲存格以輸出唯一數字,在此示例中,我選擇了 E2 儲存格,然後輸入以下公式並按下 Enter 鍵以獲取 A2 和 B2 儲存格之間的唯一數字。
選擇公式儲存格並向下拖動其自動填充控制柄,以獲取其他行中儲存格之間的唯一數字。
=COMPARE(A2,B2,FALSE)
最佳辦公效率工具
🤖 | Kutools AI 助手:基於智能執行方式革新數據分析:智能執行 | 生成代碼 | 創建自訂公式 | 分析數據並生成圖表 | 調用 Kutools 函數… |
熱門功能:查找、標記重複值或識別重複項 | 刪除空行 | 合併列或單元格而不丟失數據 | 四捨五入無需公式 ... | |
高級 LOOKUP: 多條件 VLookup | 多值 VLookup | 多表查找 | 模糊查找 .... | |
高級下拉列表:快速創建下拉列表 | 依賴下拉列表 | 多選下拉列表 .... | |
列管理器: 添加特定數量的列 | 移動列 | 切換隱藏列的可見狀態 | 比較區域和列 ... | |
特色功能:網格聚焦 | 設計檢視 | 增強編輯欄 | 工作簿與工作表管理器 | 資源庫(自動文本) | 日期提取器 | 合併資料 | 加密/解密儲存格 | 按列表發送電子郵件 | 超級篩選 | 特殊篩選(篩選粗體/斜體/刪除線...) ... | |
頂級 15 種工具集: 12 個文本工具(添加文本、刪除特定字符、...) | 50+ 圖表 類型(甘特圖、...) | 40+ 實用 公式(基於生日計算年齡、...) | 19 個插入工具(插入QR碼、根據路徑插入圖片、...) | 12 個轉換工具(金額轉大寫、匯率轉換、...) | 7 個合併與分割工具(高級合併行、分割儲存格、...) | ... 還有更多 |
使用 Kutools for Excel 提升您的 Excel 技巧,體驗前所未有的高效。 Kutools for Excel 提供超過 300 種高級功能來提高生產力並節省時間。 點擊這裡獲取您最需要的功能...
Office Tab 將標籤式界面帶到 Office,讓您的工作更加輕鬆
- 在 Word、Excel、PowerPoint、Publisher、Access、Visio 和 Project 中啟用標籤式編輯和閱讀。
- 在同一窗口的新標籤中打開和創建多個文檔,而不是在新窗口中。
- 將您的生產力提高 50%,每天為您減少數百次鼠標點擊!