Итак, у меня есть эта функция, которая будет быстро возвращать расстояние Левенштейна между двумя строками:Найти, какие клетки имеют наименьшее расстояние Левенштейна
Function Levenshtein(ByVal string1 As String, ByVal string2 As String) As Long
Dim i As Long, j As Long
Dim string1_length As Long
Dim string2_length As Long
Dim distance() As Long
string1_length = Len(string1)
string2_length = Len(string2)
ReDim distance(string1_length, string2_length)
For i = 0 To string1_length
distance(i, 0) = i
Next
For j = 0 To string2_length
distance(0, j) = j
Next
For i = 1 To string1_length
For j = 1 To string2_length
If Asc(Mid$(string1, i, 1)) = Asc(Mid$(string2, j, 1)) Then
distance(i, j) = distance(i - 1, j - 1)
Else
distance(i, j) = Application.WorksheetFunction.Min _
(distance(i - 1, j) + 1, _
distance(i, j - 1) + 1, _
distance(i - 1, j - 1) + 1)
End If
Next
Next
Levenshtein = distance(string1_length, string2_length)
End Function
Я хочу, чтобы выполнить быстрое сравнение между всеми клетками в «А» колонке и возврате, у которых есть «небольшое» расстояние Левенштейна. Как бы я сделал все эти сравнения?
Используйте таблицу. Переместите столбец A в строку 1 и используйте таблицу для сравнения. Условный формат для определения «малого». –