2017-04-11 27 views
3

我創建了一個評估,申請人填寫Excel。我有一把鑰匙,我在那裏複製他們的答案,並告訴我他們的答案是否與我的鑰匙匹配。 我想添加一個公式,該公式還會顯示申請人的單元格(B2)和密鑰單元格(A2)之間的差異,以便更容易地查看他們出錯的地方。如何判斷Excel中兩個字符串的區別?

我試過使用=SUBSTITUTE(B2,A2,"")但這隻會給我在字符串的開頭或結尾的差異。通常,差異在中間。

例如,我的密鑰(單元格A2)可能會說:Cold War |豬灣|菲德爾卡斯特羅

而申請人(單元格B2)可能會說:冷戰|古巴導彈危機|菲德爾·卡斯特羅

我想這個公式返回:「古巴導彈危機」

+0

替代品將無處不在,不僅開始或結束。你的單元格A2包含所有三個字符串?或提到的任何字符串? –

+0

'A2'是否有冷戰|豬灣|菲德爾·卡斯特羅「在牢房裏?或者那些分別在'A2','B2','C2'中?如果您可以使用「文本到列」並使用'|'作爲分隔符,則可能會更遠一些。這會將您的數據分成三列,您可以更輕鬆地檢查彼此。另外,我認爲順序並不重要? – BruceWayne

+0

對不起,是的,「冷戰|豬灣|菲德爾卡斯特羅」是單元格中的字符串。同「冷戰|古巴導彈危機|菲德爾卡斯特羅」 – DukeSilver

回答

6

你可以試試這樣的事情...

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,並返回字符串的任何不匹配部分。所以它會比較兩種方式。

enter image description here

+0

這是做這項工作。謝謝!我現在意識到一些答案正在返回空字符串,其中一個單元格比另一個單元格少。例如,如果密鑰(A2)包含「冷戰|豬灣|菲德爾卡斯特羅」但他們回答了(B2)「冷戰|豬灣」,則「= CompareStrings(A2,B2)'返回」「 。我試着倒轉它,所以它變成了'= CompareStrings(B2,A2)',但它只是返回「豬羣灣」。 在這種情況下是否會有方法使'= CompareStrings(A2,B2)'返回「Fidel Castro」? – DukeSilver

+0

不客氣。編輯解決方案並添加另一個UDF,它們將兩種方式進行比較。 – sktneer

+0

太棒了。非常感謝你! – DukeSilver

相關問題