Excel-Levenshteinalgorithm应用于列

我正在尝试使用Levenshteinalgorithm来查找logging之间的相似性。 我有什么是项目#的列,说明,查找,相似性(%),ReturnSimilarItem。 在列描述我有几个不同的描述,在lookUp项目中,我将具有类似的值,以描述列中的值。 使用Levenshtein函数我想要识别相似性,如果超过90%,我想返回附加到类似项目的Item#列的值。请参阅图片以获得更好的描述。 在这里输入图像说明 这里是我使用的Levenshtein的代码:

Function Levenshtein3(ByVal string1 As String, ByVal string2 As String) As Long Dim i As Long, j As Long, string1_length As Long, string2_length As Long Dim distance(0 To 60, 0 To 50) As Long, smStr1(1 To 60) As Long, smStr2(1 To 50) As Long Dim min1 As Long, min2 As Long, min3 As Long, minmin As Long, MaxL As Long string1_length = Len(string1): string2_length = Len(string2) distance(0, 0) = 0 For i = 1 To string1_length: distance(i, 0) = i: smStr1(i) = Asc(LCase(Mid$(string1, i, 1))): Next For j = 1 To string2_length: distance(0, j) = j: smStr2(j) = Asc(LCase(Mid$(string2, j, 1))): Next For i = 1 To string1_length For j = 1 To string2_length If smStr1(i) = smStr2(j) Then distance(i, j) = distance(i - 1, j - 1) Else min1 = distance(i - 1, j) + 1 min2 = distance(i, j - 1) + 1 min3 = distance(i - 1, j - 1) + 1 If min2 < min1 Then If min2 < min3 Then minmin = min2 Else minmin = min3 Else If min1 < min3 Then minmin = min1 Else minmin = min3 End If distance(i, j) = minmin End If Next Next ' Levenshtein3 will properly return a percent match (100%=exact) based on similarities and Lengths etc... MaxL = string1_length: If string2_length > MaxL Then MaxL = string2_length Levenshtein3 = 100 - CLng((distance(string1_length, string2_length) * 100) / MaxL) End Function 

我如何使用它从C3查找值并查看整个B列,并且一旦find类似90%以上的项目,则返回附加到该描述的Item#

在R上的Python更容易吗?