如何比較兩個單元格中的逗號分隔值並在 Excel 中返回重複值或唯一值?
如下圖所示,有兩列 - Column1 和 Column2,列中的每個單元格都包含逗號分隔的數字。 要將 Column1 中的逗號分隔數字與 Column2 同一行中的單元格內容進行比較並返回所有重複值或唯一值,您可以做什麼?
本教程提供了兩種方法來幫助您完成此任務。
比較兩個單元格中的逗號分隔值並使用公式返回重複值或唯一值
本節提供了兩個公式來幫助比較兩個單元格中的逗號分隔值並返回它們之間的重複值或唯一值。
備註:以下公式僅適用於 Excel 365. 如果您使用的是其他版本的 Excel, 嘗試使用下面的 VBA 方法.
以上面兩列為例,要將Column1中的逗號分隔數字與Column2同一行中的逗號分隔數字進行比較,並返回重複值或唯一值,請執行以下操作。
返回重複值
1.選擇一個單元格輸出兩個指定單元格之間的重複數字,以逗號分隔數字,在這種情況下,我選擇單元格D2,然後輸入下面的公式並按 Enter 鑰匙。 選擇公式單元格並拖動它的 自動填充句柄 down 以獲取其他行中單元格之間的重複數字。
=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 鑰匙。 選擇公式單元格並拖動它的 自動填充句柄 down 以獲取其他行中單元格之間的唯一數字。
=TEXTJOIN(", ",TRUE,UNIQUE(TRANSPOSE(TEXTSPLIT(TEXTJOIN(", ",TRUE,A2:B2), ", ")),,1))
筆記:
使用 Kutools AI 解鎖 Excel 魔法
- 智慧執行:執行單元格操作、分析資料並建立圖表 - 所有這些都由簡單的命令驅動。
- 自定義公式:產生客製化公式以簡化您的工作流程。
- VBA編碼:輕鬆編寫和實作 VBA 程式碼。
- 公式解讀:輕鬆理解複雜的公式。
- 文字翻譯:打破電子表格中的語言障礙。
使用逗號分隔值比較兩列並使用 VBA 返回重複值或唯一值
本節中提供的用戶定義函數有助於比較兩個指定單元格中的逗號分隔值,並返回它們之間的重複值或唯一值。 請按如下方式操作。
同樣以上面的例子為例,要將 Column1 中的逗號分隔數字與 Column2 同一行中的逗號分隔數字進行比較並返回重複值或唯一值,請嘗試本節中的用戶定義函數。
1. 在打開的工作簿中,按 其他 + 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腳本運行時 框,然後單擊 OK 按鈕。
4。 按 其他 + Q 關閉鍵 Microsoft Visual Basic for Applications 窗口。
5. 現在您需要分別應用兩個函數來返回兩個逗號分隔值單元格中的重複值和唯一值。
返回重複值
選擇一個單元格輸出重複的數字,在這個例子中,我選擇單元格D2,然後輸入下面的公式並按 Enter 鍵獲取單元格 A2 和 B2 之間的重複數字。
選擇公式單元格並向下拖動其自動填充手柄以獲取其他行中單元格之間的重複數字。
=COMPARE(A2,B2,TRUE)
返回唯一值
選擇一個單元格輸出唯一數字,在這個例子中,我選擇單元格E2,然後輸入下面的公式並按 Enter 獲取單元格 A2 和 B2 之間的唯一數字的鍵。
選擇公式單元格並向下拖動其自動填充句柄以獲取其他行中單元格之間的唯一數字。
=COMPARE(A2,B2,FALSE)
最佳辦公生產力工具
🤖 | Kutools 人工智慧助手:基於以下內容徹底改變數據分析: 智慧執行 | 生成代碼 | 建立自訂公式 | 分析數據並產生圖表 | 呼叫 Kutools 函數... |
熱門特色: 尋找、突出顯示或識別重複項 | 刪除空白行 | 合併列或儲存格而不遺失數據 | 沒有公式的回合 ... | |
超級查詢: 多條件VLookup | 多值VLookup | 跨多個工作表的 VLookup | 模糊查詢 .... | |
高級下拉列表: 快速建立下拉列表 | 依賴下拉列表 | 多選下拉列表 .... | |
欄目經理: 新增特定數量的列 | 移動列 | 切換隱藏列的可見性狀態 | 比較範圍和列 ... | |
特色功能: 網格焦點 | 設計圖 | 大方程式酒吧 | 工作簿和工作表管理器 | 會員專區 (自動文字) | 日期選擇器 | 合併工作表 | 加密/解密單元格 | 按清單發送電子郵件 | 超級濾鏡 | 特殊過濾器 (過濾粗體/斜體/刪除線...)... | |
前 15 個工具集: 12 文本 工具 (添加文本, 刪除字符,...) | 50+ 圖表 類型 (甘特圖,...) | 40+ 實用 公式 (根據生日計算年齡,...) | 19 插入 工具 (插入二維碼, 從路徑插入圖片,...) | 12 轉化 工具 (數字到單詞, 貨幣兌換,...) | 7 合併與拆分 工具 (高級合併行, 分裂細胞,...) | ... 和更多 |
使用 Kutools for Excel 增強您的 Excel 技能,體驗前所未有的效率。 Kutools for Excel 提供了 300 多種進階功能來提高生產力並節省時間。 點擊此處獲取您最需要的功能...
Office選項卡為Office帶來了選項卡式界面,使您的工作更加輕鬆
- 在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
- 在同一窗口的新選項卡中而不是在新窗口中打開並創建多個文檔。
- 將您的工作效率提高 50%,每天為您減少數百次鼠標點擊!