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