我如何分辨Excel中两个string的区别?

我创build了一个评估,申请人填写在Excel中。 我有一个钥匙,我复制他们的答案,并告诉我他们的答案是否符合我的密钥。 我想添加一个公式,这个公式还会显示出申请人的单元格(B2)和密钥单元格(A2)之间的差异 ,以便更容易地看出他们错了什么。

我尝试使用=SUBSTITUTE(B2,A2,"")但这只给了我在string的开头或结尾的差异。 通常,差异在中间。

例如,我的键(单元格A2)可能会说:冷战| 猪湾| 菲德尔·卡斯特罗

而申请人(单元格B2)可能会说:冷战| 古巴导弹危机| 菲德尔·卡斯特罗

我想要这个公式返回:“古巴导弹危机”

你可以尝试这样的事情…

 Function CompareStrings(keyRng As Range, ansRng As Range) As String Dim arr() As String Dim i As Long arr() = Split(ansRng.Value, "|") For i = 0 To UBound(arr) If InStr(keyRng.Value, arr(i)) = 0 Then CompareStrings = arr(i) Exit Function End If Next i End Function 

那么你可以像下面这样使用这个UDF …

 =CompareStrings(A2,B2) 

如果你想以相反的顺序比较它们,并返回它们中任何一个没有匹配的string部分,试试这个…

 Function CompareStrings(ByVal keyRng As Range, ByVal ansRng As Range) As String Dim arr() As String Dim i As Long Dim found As Boolean arr() = Split(ansRng.Value, "|") For i = 0 To UBound(arr) If InStr(keyRng.Value, Trim(arr(i))) = 0 Then found = True CompareStrings = arr(i) Exit Function End If Next i If Not found Then arr() = Split(keyRng.Value, "|") For i = 0 To UBound(arr) If InStr(ansRng.Value, Trim(arr(i))) = 0 Then CompareStrings = arr(i) Exit Function End If Next i End If End Function 

像以前一样使用这个像下面…

 =CompareStrings(A2,B2) 

所以函数首先将B2的所有string部分与A2进行比较,如果发现任何不匹配,则返回该string的一部分,如果没有发现任何不匹配,则将A2中的所有string与B2并返回string的任何不匹配部分。 所以它会比较两种方式。

在这里输入图像说明