Vba 比较Excel电子表格中单独单元格中的字符串?

Vba 比较Excel电子表格中单独单元格中的字符串?,vba,excel,Vba,Excel,我有一个包含字母数字数据的大型Excel电子表格。我希望能够并排比较不同行中的两个单元格,并返回另一个单元格中的差异 e、 我在B2号牢房有“汤姆,瑞克,迈克,我”和C2号牢房有“迈克,瑞克”。我需要 将单元格C2与单元格B2进行比较,并返回单元格D2中的差异,在本例中为字符“tom,I”。它们用“,”分隔,并且可以按照不同的顺序排列,如您在示例中所看到的。将每个字符串拆分为一个项目列表。将第一个列表中的每个项目与第二个列表中的项目进行比较,将不在第二个列表中的项目添加到第三个列表中。您可能需要

我有一个包含字母数字数据的大型Excel电子表格。我希望能够并排比较不同行中的两个单元格,并返回另一个单元格中的差异

e、 我在B2号牢房有“汤姆,瑞克,迈克,我”和C2号牢房有“迈克,瑞克”。我需要
将单元格C2与单元格B2进行比较,并返回单元格D2中的差异,在本例中为字符“tom,I”。它们用“,”分隔,并且可以按照不同的顺序排列,如您在示例中所看到的。

将每个字符串拆分为一个项目列表。将第一个列表中的每个项目与第二个列表中的项目进行比较,将不在第二个列表中的项目添加到第三个列表中。您可能需要将其展开以处理包含空格和逗号的列表

Public Function ListDiff(names1 As String, names2 As String) As String

    Dim list1() As String
    Dim list2() As String

    list1 = Split(names1, ",")
    list2 = Split(names2, ",")
    list3 = ""

    For i = LBound(list1) To UBound(list1)
        If Not existsInList(list2, list1(i)) Then
            list3 = list3 & "," & list1(i)
        End If
    Next i
    'remove leading comma
    ListDiff = Right(list3, Len(list3) - 1)

End Function

Public Function existsInList(list() As String, item As String) As Boolean

    exists = False
    i = LBound(list)
    bFound = False

    While i <= UBound(list) And Not bFound
        If list(i) = item Then
            bFound = True
        End If
        i = i + 1
    Wend
    existsInList = bFound

End Function
公共函数ListDiff(名称1为字符串,名称2为字符串)为字符串
Dim list1()作为字符串
Dim list2()作为字符串
列表1=拆分(名称1,“,”)
列表2=拆分(名称2,“,”)
list3=“”
对于i=LBound(列表1)到UBound(列表1)
如果不存在列表(列表2,列表1(i)),则
list3=list3&“,”&list1(i)
如果结束
接下来我
'删除前导逗号
ListDiff=右(list3,Len(list3)-1)
端函数
公共函数existsInList(list()作为字符串,项作为字符串)作为布尔值
存在=错误
i=LBound(列表)
bFound=False

而我和你试过什么?如果您还没有尝试过任何方法,那么您可能希望使用
SPLIT
REPLACE
,看看它对您的效果如何?