Excel – 检查2个string是否匹配,如果不匹配,则返回两个string所在的位置

我有两个string,我想比较。 我想要的function基本上是:

(1)检查两个string是否完全匹配

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

(3)如果不匹配,则返回两个分歧处的string的位置


例如:

细胞A1:巴拉克奥巴马

单元格A2:Barack Obana

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


我的尝试:

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


谢谢!

下面的VBAfunction如何?

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个string作为input。 首先,检查两个string是否相同。 如果是,则返回“MATCH”。

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

如果string匹配,但是第二个string比较长(例如,“cat”和“cattle”),则返回BaseString + 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选项从长远来看将更易于使用和参考。

在这里输入图像说明