Excel - 检查2个字符串是否匹配,如果它们不匹配,则返回两个字符串发散的字符串的位置

时间:2017-01-19 17:06:44

标签: excel string

我想要比较两个字符串。我想要的功能基本上是:

(1)检查两个字符串是否完全匹配

(2)如果匹配,则返回TRUE

(3)如果它们不匹配,则返回两个发散的字符串的位置

例如:

Cell A1:Barack Obama

细胞A2:Barack Obana

我知道这两个字符串不匹配,错误是" n"在" Obana"。因此,错误发生在A2中的字符串位置10。我希望函数返回10。

我的尝试:

= IF(EXACT(A1,A2)," MATCH",?? (搜索(A1,A2,1))??

谢谢!

2 个答案:

答案 0 :(得分:1)

以下VBA功能如何:

Function MatchOrDiverge(BaseString As String, ComparedString As String)

If BaseString = ComparedString Then
    MatchOrDiverge = "MATCH"
Else
    For i = 1 To Len(BaseString)
        If Not (Mid(BaseString, i, 1) = Mid(ComparedString, i, 1)) Then
            MatchOrDiverge = i
            Exit Function
        End If
    Next i
    MatchOrDiverge = Len(BaseString) + 1
End If

End Function

这需要2个字符串作为输入。首先,它检查2个字符串是否相同。如果是,则返回" MATCH"。

如果2个字符串不相等,则循环遍历BaseString并根据ComparisonString检查其字符。当角色不匹配时,它会返回该角色的索引。

如果字符串匹配,但第二个字符串更长(例如," cat"" cattle"),则返回BaseString + 1的长度。

屏幕截图:

enter image description here

答案 1 :(得分:1)

这是一个公式:

=IF(EXACT(A1,A2),"MATCH",AGGREGATE(15,6,ROW(INDIRECT("1:" & MAX(LEN(A1),LEN(A2))))/(NOT(EXACT(MID(A1,ROW(INDIRECT("1:" & MAX(LEN(A1),LEN(A2)))),1),MID(A2,ROW(INDIRECT("1:" & MAX(LEN(A1),LEN(A2)))),1)))),1))

这是一个漫长而复杂的公式,改变参考文献并不快。从长远来看,elmer007给出的UDF选项更容易使用和引用。

enter image description here