如何比较两个单元格中的逗号分隔值并在 Excel 中返回重复值或唯一值?
如下图所示,有两列 - Column1 和 Column2,列中的每个单元格都包含逗号分隔的数字。 要将 Column1 中的逗号分隔数字与 Column2 同一行中的单元格内容进行比较并返回所有重复值或唯一值,您可以做什么?
本教程提供了两种方法来帮助您完成此任务。
比较两个单元格中的逗号分隔值并使用公式返回重复值或唯一值
本节提供了两个公式来帮助比较两个单元格中的逗号分隔值并返回它们之间的重复值或唯一值。
备注:以下公式仅适用于 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))
:
使用逗号分隔值比较两列并使用 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 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应用程序 窗口。
5. 现在您需要分别应用两个函数来返回两个逗号分隔值单元格中的重复值和唯一值。
返回重复值
选择一个单元格输出重复的数字,在这个例子中,我选择单元格D2,然后输入下面的公式并按 输入 键获取单元格 A2 和 B2 之间的重复数字。
选择公式单元格并向下拖动其自动填充手柄以获取其他行中单元格之间的重复数字。
=COMPARE(A2,B2,TRUE)
返回唯一值
选择一个单元格输出唯一数字,在这个例子中,我选择单元格E2,然后输入下面的公式并按 输入 获取单元格 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 Tab 为 Office 带来选项卡式界面,让您的工作更加轻松
- 在Word,Excel,PowerPoint中启用选项卡式编辑和阅读,发布者,Access,Visio和Project。
- 在同一窗口的新选项卡中而不是在新窗口中打开并创建多个文档。
- 每天将您的工作效率提高50%,并减少数百次鼠标单击!