我创建了一个用户定义的函数来显示公司匹配的程度。 只要我使用的范围小于或接近第2800行,这个函数就能很好地工作。 我有一个包含4000家公司的列表,但是当我尝试包含在2800行以上的行时,该函数不起作用。 范围只能这么大吗? 有没有办法解决这个问题?
这是代码:
这是代码:
Function bestMatch(company As String, thisRange As Range) As String
Dim min As Double, nextMin As Double
Dim cell As Range
Dim score As Double
Dim best As String, str As String, nextBest As String
min = 99999
nextMin = 99999
For Each cell In thisRange.Cells
str = cell.Value
substr1 = Left(str, 1)
substr2 = Left(company, 1)
score = Leven(company, str)
If score < min And substr1 = substr2 Then
min = score
best = str
ElseIf score = min And substr1 = substr2 Then
min = score
best = str + " && " + best
ElseIf score > min And score <= nextMin And substr1 = substr2 Then
nextMin = score
nextBest = str
min = min
best = best
End If
Next
If min > 15 Then
bestMatch = "No Match Found"
ElseIf min <= 15 Then
bestMatch = "1. " + best + " 2. " + nextBest
End If
End Function
str
作为变量名可能会有问题,因为VBA内置了一个名为Str
的函数(用于将数字转换为字符串)。除非您的str
变量是一个数组,否则这不太可能成为问题 - 在这种情况下,str(1)
将是一个数组访问而不是函数调用。 - barrowc