如何在Excel中提取仅出现一次的非重复值?
提取仅在单个单元格中出现的非重复值
针对你需要从两个分号分隔的单元格中,提取仅在第一个单元格出现、未在第二个单元格出现的值的需求,提供两种实用方案:
方法1:Excel 动态数组公式(适用于365/2021版本)
在A4单元格直接输入以下公式,回车即可得到结果:
=TEXTJOIN("; ", TRUE, FILTER(TEXTSPLIT(A2, "; "), ISNA(XMATCH(TEXTSPLIT(A2, "; "), TEXTSPLIT(A3, "; ")))))
公式逻辑:
TEXTSPLIT把两个单元格的内容按「; 」拆分成独立数值数组XMATCH检查A2的每个数值是否在A3中存在,不存在的返回#N/AFILTER筛选出仅在A2存在的数值TEXTJOIN把筛选结果重新用「; 」拼接成字符串
方法2:VBA自定义函数(兼容全版本Excel)
如果你的Excel不支持动态数组,用VBA写自定义函数更稳妥:
- 按
Alt + F11打开VBA编辑器 - 右键左侧工程面板 → 插入 → 模块
- 粘贴以下代码:
Function GetUniqueOnly(rngSource As Range, rngCompare As Range) As String Dim arrSource As Variant, arrCompare As Variant Dim dict As Object Dim i As Integer Dim result As String Set dict = CreateObject("Scripting.Dictionary") ' 拆分源单元格内容存入字典 arrSource = Split(rngSource.Value, "; ") For i = LBound(arrSource) To UBound(arrSource) dict(arrSource(i)) = 1 Next i ' 移除对比单元格中存在的内容 arrCompare = Split(rngCompare.Value, "; ") For i = LBound(arrCompare) To UBound(arrCompare) If dict.Exists(arrCompare(i)) Then dict.Remove arrCompare(i) End If Next i ' 拼接结果字符串 result = IIf(dict.Count > 0, Join(dict.Keys, "; "), "") GetUniqueOnly = result End Function
- 返回Excel,在A4单元格输入:
=GetUniqueOnly(A2, A3)
内容的提问来源于stack exchange,提问作者quite
相关产品推荐
相关产品推荐

