如何用vba判断两个字符串的相似度?

在用vba做企业名称判断时,经常会遇到需要判断两个公司名称是否相似。

这个就涉及到字符串相似度的判断。

这里介绍一个最简单的判断方法,就是分别将其中一个字符串中的任意一个文字提取出来进行包含判断,最后统计包含的字符数。

以下是一个判断的自定义vba函数:

Function IsTheSame(ByVal str1 As String, ByVal str2 As String)
    '作者QQ:1722187970,微信:xycgenius,公众号:水星Excel
    '如果返回1,则相似,否则不相似。
    len1 = Len(str1)
    len2 = Len(str2)
    matchLen = 0
    If len1 >= len2 Then
        For i = 1 To len2
            If (VBA.InStr(1, str1, Mid(str2, i, 1))) > 0 Then
                matchLen = matchLen + 1
            End If
        Next
        If matchLen >= len1 * 2 / 3 Then
            result = 1
        Else
            result = 0
        End If
    Else
        For i = 1 To len1
            If (VBA.InStr(1, str2, Mid(str1, i, 1))) > 0 Then
                matchLen = matchLen + 1
            End If
        Next
         If matchLen >= len2 * 2 / 3 Then
            result = 1
        Else
            result = 0
        End If
    End If
    IsTheSame = result
End Function
       

发表评论