从同一单元格中的一组数字中提取唯一数字

从同一单元格中的一组数字中提取唯一数字

我在一个单元格中有几个数字,用逗号分隔。旁边的单元格有类似的数字,但有些是唯一的。我需要一个公式来提取唯一数字并将它们放在另一个单元格中。我试过条件格式,但没有成功。该函数似乎无法突出显示唯一单元格。

1型 2型
12,18,67 12,18
45,32,55 55,32,26

答案1

如果这是你想要的结果:

在此处输入图片描述

你可以使用这个公式:

C2: =TEXTJOIN(",",TRUE,FILTERXML("<t><s>" & SUBSTITUTE(SUBSTITUTE(TEXTJOIN(",",TRUE,A2,B2),",","</s><s>")& "</s></t>"," ",""),"//s[not( .=preceding::* or .=following::*) ]"))

我知道您在 Excel 2016 中没有该TEXTJOIN功能,但您在评论中提到您可以将其添加为 VBA 模块,所以我建议您这样做。

由于您可能正在使用 VBA,因此您可以使用 VBA 完成整个任务:

Option Explicit
Function UniqueSingleOccurrence(ParamArray vals() As Variant)
    Dim dict As Object, v, w, x, y
    
Set dict = CreateObject("Scripting.Dictionary")

'Store all the values in an Array List
For Each v In vals
    Select Case TypeName(v)
        Case "Range"
            For Each w In v
                For Each x In Split(w, ",")
                    y = Trim(x)
                    If Not dict.exists(y) Then
                        dict.Add y, 1
                    Else
                        dict(y) = dict(y) + 1
                    End If
                Next x
            Next w
        Case "String"
            For Each x In Split(v, ",")
                y = Trim(x)
                If Not dict.exists(y) Then
                    dict.Add y, 1
                Else
                    dict(y) = dict(y) + 1
                End If
            Next x
        Case Else
            MsgBox "Typename = " & TypeName(v) & vbLf & "Needs code revision"
            Exit Function
    End Select
    Next v
    
'remove the duplicated values
For Each v In dict.keys
    If dict(v) > 1 Then dict.Remove (v)
Next v

UniqueSingleOccurrence = Join(dict.keys, ",")
    
End Function

相关内容