Здравствуйте!
После вставки функции FuzzyVLOOKUP, каждый раз когда фильтрую данные или удаляю строки идет пересчет листа, и это тормозит работу. Как можно ускорить работы функции FuzzyVLOOKUP.
Можно ли дописать макрос?
После вставки функции FuzzyVLOOKUP, каждый раз когда фильтрую данные или удаляю строки идет пересчет листа, и это тормозит работу. Как можно ускорить работы функции FuzzyVLOOKUP.
Можно ли дописать макрос?
Код |
---|
Public Function FuzzyVLOOKUP(Искомое_Значение As Range, Словарь As Range, Значение_или_индекс As Boolean, Optional Процент_совпадения As Long = 50, Optional Минимальная_длина_слова As Long = 0, Optional Слова_исключения As String = "") Dim x As Long Dim y As Double Dim Score As Double Dim min As Double Dim Max As Long Dim max2 As Long Dim d As Long For x = 1 To Словарь.Count Score = SringCompare(Искомое_Значение.Value, Словарь(x).Value, 50, Минимальная_длина_слова, Слова_исключения, Max) Score = Score + SringCompare(Словарь(x).Value, Искомое_Значение.Value, 50, Минимальная_длина_слова, Слова_исключения, max2) 'If min > Score Then min = Score 'If Max < Score Then Max = Score If Score > y Then y = Score If Значение_или_индекс = False Then d = max2 'Debug.Print Score / ((Max + d) * 100) If Score / ((Max + d) * 100) >= (Процент_совпадения / 100) Then FuzzyVLOOKUP = Словарь(x).Value Else: FuzzyVLOOKUP = "Нет совпадений" End If End If If Значение_или_индекс = True Then d = max2 'Debug.Print rngWith(x).Value FuzzyVLOOKUP = Score / ((Max + d) * 100) End If End If Next x End Function |