我需要逐个字母地比较两个单元格中的文本,并返回不匹配字符的数量。 示例:
A - Richard
B - Rickard
Expected in C - 1 ( because only one character is mismatch)
A - 2004DRTYHJ
B - 1004XGTYHJ
Expected in C - 3 ( Three characters are mismatch )
应该逐个字母进行比较。
谢谢。
答案 0 :(得分:0)
这不是一个很好的解决方案,但是如果假设两个字符串都将始终具有相同的长度,并且只是在位置上放错了字母(即没有像“ Richard”和“ BRichar”那样的转置)。
不带斜线地将两个字符串分开,仅将每个字母分开(数据->文本至列)。
现在我们有类似的东西
clone()
R I C H A R D
在它们之下,如果相等,则使用相等运算符将其设置为TRUE,否则将使用FALSE设置。然后在FALSES上做一个COUNTIF。
然后,如果需要大量错位字符,则可以在COUNTIF上进行求和。
同样,这仅在我说的假设是正确的情况下有效。
答案 1 :(得分:0)
我创建了一个解决方案,如果有很大差异,则将其添加到最终计数中。首先是完成工作的功能,然后在底部列出如何调用的示例:
Public Function Differences(strA As String, strB As String)
Dim i As Integer
Dim intMinLen As Integer
Dim intCountDiff As Integer
intCountDiff = 0
If Len(strA) < Len(strB) Then
intMinLen = Len(strA)
Else
intMinLen = Len(strB)
End If
For i = 1 To intMinLen
If Mid(strA, i, 1) <> Mid(strB, i, 1) Then
intCountDiff = intCountDiff + 1
End If
Next i
Differences = intCountDiff + Abs(Len(strA) - Len(strB))
End Function
Public Sub test()
Range("A3").Value = Differences(Range("A1").Value, Range("A2").Value)
Range("B3").Value = Differences(Range("B1").Value, Range("B2").Value)
End Sub
答案 2 :(得分:0)
这需要成为VBA吗?该公式将根据您提供的样本数据返回预期结果。将其放在单元格C1中并向下复制:
=MAX(LEN(A1),LEN(B1))-SUMPRODUCT(--(MID(A1,ROW(A$1:INDEX(A:A,MIN(LEN(A1),LEN(B1)))),1)=MID(B1,ROW(B$1:INDEX(B:B,MIN(LEN(A1),LEN(B1)))),1)))