
如何比較兩個單元格中的逗號分隔值并在 Excel 中返??回重復值或唯一值?
如下圖所示,有兩列 - Column1 和 Column2,列中的每個單元格都包含逗號分隔的數字。 要將 Column1 中的逗號分隔數字與 Column2 同一行中的單元格內容進行比較并返回所有重復值或唯一值,您可以做什么?
本教程提供了兩種方法來幫助您完成此任務。
比較兩個單元格中的逗號分隔值并使用公式返回重復值或唯一值-- 返回重復值-- 返回唯一值比較兩個單元格中的逗號分隔值并使用 VBA 返回重復值或唯一值-- 返回重復值-- 返回唯一值比較兩個單元格中的逗號分隔值并使用公式返回重復值或唯一值本節提供了兩個公式來幫助比較兩個單元格中的逗號分隔值并返回它們之間的重復值或唯一值。
備注:以下公式僅適用于 Excel 365. 如果您使用的是其他版本的 Excel, 嘗試使用下面的 VBA 方法.
以上面兩列為例,要將Column1中的逗號分隔數字與Column2同一行中的逗號分隔數字進行比較,并返回重復值或唯一值,請執行以下操作。
返回重復值1.選擇一個單元格輸出兩個指定單元格之間的重復數字,以逗號分隔數字,在這種情況下,我選擇單元格D2,然后輸入下面的公式并按 輸入 鑰匙。 選擇公式單元格并拖動它的 自動填充句柄 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,然后輸入下面的公式并按 輸入 鑰匙。 選擇公式單元格并拖動它的 自動填充句柄 down 以獲取其他行中單元格之間的唯一數字。
=TEXTJOIN(", ",TRUE,UNIQUE(TRANSPOSE(TEXTSPLIT(TEXTJOIN(", ",TRUE,A2:B2), ", ")),,1))
:
1)以上兩個公式只能在Excel for 365中應用,如果你使用的Excel不是365版本的Excel,請嘗試下面的VBA方法。2)要比較的單元格必須在同一行或同一列中彼此相鄰。使用逗號分隔值比較兩列并使用 VBA 返回重復值或唯一值本節中提供的用戶定義函數有助于比較兩個指定單元格中的逗號分隔值,并返回它們之間的重復值或唯一值。 請按如下方式操作。
同樣以上面的例子為例,要將 Column1 中的逗號分隔數字與 Column2 同一行中的逗號分隔數字進行比較并返回重復值或唯一值,請嘗試本節中的用戶定義函數。
1. 在打開的工作簿中,按 其他 + F11 鍵打開 Microsoft Visual Basic應用程序 窗口。
2.在 Microsoft Visual Basic應用程序 窗口中,單擊 插頁 > 模塊, 并將以下 VBA 代碼復制到 模塊(代碼) 窗口。
VBA 代碼:比較兩個單元格中的逗號分隔值并返回重復/唯一值
Private Function COMPARE(Rng1, Rng2 As Range, Op As Boolean)Updated by Extendoffice 20221019Dim R1Arr As VariantDim R2Arr As VariantDim Ans1 As StringDim Ans2 As StringDim Separator As StringDim d1 As New DictionaryDim d2 As New DictionaryDim d3 As New DictionaryApplication.VolatileSeparator = ", "R1Arr = Split(Rng1.Value, Separator)R2Arr = Split(Rng2.Value, Separator)Ans1 = ""Ans2 = ""For Each ch In R2ArrIf Not d2.Exists(ch) Thend2.Add ch, "1"End IfNextIf Op ThenFor Each ch In R1ArrIf d2.Exists(ch) ThenIf Not d3.Exists(ch) Thend3.Add ch, "1"Ans1 = Ans1 & ch & SeparatorEnd IfEnd IfNextIf Ans1 <> "" ThenAns1 = Mid(Ans1, 1, Len(Ans1) - Len(Separator))End IfCOMPARE = Ans1ElseFor Each ch In R1ArrIf Not d1.Exists(ch) Thend1.Add ch, "1"End IfNextFor Each ch In R1ArrIf Not d2.Exists(ch) ThenIf Not d3.Exists(ch) Thend3.Add ch, "1"Ans2 = Ans2 & ch & SeparatorEnd IfEnd IfNextFor Each ch In R2ArrIf Not d1.Exists(ch) ThenIf Not d3.Exists(ch) Thend3.Add ch, "1"Ans2 = Ans2 & ch & SeparatorEnd IfEnd IfNextIf Ans2 <> "" ThenAns2 = Mid(Ans2, 1, Len(Ans2) - Len(Separator))End IfCOMPARE = Ans2End IfEnd FunctionCopy3.粘貼代碼后 模塊(代碼) 窗口,去點擊 工具 > 參考資料 打開 參考– VBAProject 窗口中,檢查 Microsoft腳本運行時 框,然后單擊 OK 按鈕。
4。 按 其他 + Q 關閉鍵 Microsoft Visual Basic應用程序 窗口。
5. 現在您需要分別應用兩個函數來返回兩個逗號分隔值單元格中的重復值和唯一值。
返回重復值選擇一個單元格輸出重復的數字,在這個例子中,我選擇單元格D2,然后輸入下面的公式并按 輸入 鍵獲取單元格 A2 和 B2 之間的重復數字。
選擇公式單元格并向下拖動其自動填充手柄以獲取其他行中單元格之間的重復數字。
=COMPARE(A2,B2,TRUE)
返回唯一值選擇一個單元格輸出唯一數字,在這個例子中,我選擇單元格E2,然后輸入下面的公式并按 輸入 獲取單元格 A2 和 B2 之間的唯一數字的鍵。
選擇公式單元格并向下拖動其自動填充句柄以獲取其他行中單元格之間的唯一數字。
=COMPARE(A2,B2,FALSE)
最佳辦公生產力工具
將小時轉化為分鐘 Kutools for Excel!準備好增強您的 Excel 任務了嗎? 利用的力量 Kutools for Excel - 您終極的節省時間的工具。 簡化復雜的任務并像專業人士一樣瀏覽數據。 以閃電般的速度體驗 Excel!
為什么需要 Kutools for Excel

