Ошибка "Невозможно получить свойство lookup класса worksheetfunction" при попытке протестировать вывод функции
Написал буквально 3 строчки кода, чтобы протестировать вывод функции Lookup. При выполнении появилась ошибка "Невозможно получить свойство lookup класса worksheetfunction".
Sub TestLookUp()
Debug.Print WorksheetFunction.Lookup(Sheets("Результат").Cells(2, 1).Value, Sheets("Список А").Range("A2:B4200"), Sheets("Список А").Range("B2:B4200"))
End Sub
Файл доступен по ссылке
Ответы (1 шт):
Как раз тот вариант, когда ознакомление с данными помогает понять проблему.
Для работы функции LOOKUP (ПРОСМОТР) требуется, чтобы диапазон поиска был отсортирован по убыванию.
Если сортировка столбца А на листе Список А невозможа, применяйте другие функции с поиском точного совпадения (ВПР, ИНДЕКС/ПОИСКПОЗ)
Debug.Print Application.VLookup(Sheets("Результат").Cells(2, 1).Value, Sheets("Список А").Range("A2:B4200"), 2, 0)
With Application.WorksheetFunction
Debug.Print .Index(Sheets("Список А").Range("B2:B4200"), .Match(Sheets("Результат").Cells(2, 1).Value, Sheets("Список А").Range("A2:A4200"), 0))
End With
Функции листа работают быстрее кода VBA, но если применяются непосредственно в Excel. Вызов же функций листа из VBA - процесс сравнительно медленный, поэтому результат правильнее получать собственными средствами языка