你可以试试这样的事情...
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)
如果你想将它们以相反的顺序也比较,并从其中任何回报不匹配的字符串的一部分,试试这个...
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的所有字符串部分比较A2,如果发现任何不匹配,它将返回字符串的一部分和如果它没有发现任何不匹配,它将比较A2中字符串的所有部分与B2,并返回字符串的任何不匹配部分。所以它会比较两种方式。
替代品将无处不在,不仅开始或结束。你的单元格A2包含所有三个字符串?或提到的任何字符串? –
'A2'是否有冷战|猪湾|菲德尔·卡斯特罗“在牢房里?或者那些分别在'A2','B2','C2'中?如果您可以使用“文本到列”并使用'|'作为分隔符,则可能会更远一些。这会将您的数据分成三列,您可以更轻松地检查彼此。另外,我认为顺序并不重要? – BruceWayne
对不起,是的,“冷战|猪湾|菲德尔卡斯特罗”是单元格中的字符串。同“冷战|古巴导弹危机|菲德尔卡斯特罗” – DukeSilver