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选项从长远来看将更易于使用和参考。