你可以試試這樣的事情...
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