Ошибка "Невозможно получить свойство 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 шт):

Автор решения: vikttur

Как раз тот вариант, когда ознакомление с данными помогает понять проблему.

Для работы функции 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 - процесс сравнительно медленный, поэтому результат правильнее получать собственными средствами языка

→ Ссылка