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

问题描述:

我有两个字符串需要比较。我想要的功能是基本上是:Excel - 检查2个字符串是否匹配,如果不匹配,返回两个字符串的位置

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

(2)如果匹配,返回TRUE

(3)如果它们不匹配,返回

细胞A1::奥巴马

012,其中两个发散


例如字符串的位置

单元格A2:Barack Obana

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


我尝试:

= IF(EXACT(A1,A2), “匹配”,?? (SEARCH(A1,A2,1) )??


感谢

+0

@ScottCraner干得好。我不知道我不知道,是吗?我将删除我的评论,然后看到它的不准确... – elmer007

+0

@ elmer007虽然我同意在这种情况下UDF更适合改变引用是一项大事业,并且UDF在长期运行中会更容易使用。 –

如何以下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检查其字符。当一个字符不匹配时,它会返回该字符的索引。

如果字符串匹配,但是第二个是更长(例如,“猫”和“牛”),则返回即basestring + 1

截图的动作长度:

enter image description here

这里有一个公式:

=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