VBA VLookup должен найти значение, но не - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь использовать VLookup в VBA и получаю

'Невозможно получить свойство VLookup класса worksheetfunction'.

Я читал в других темах, что это может быть из-за того, что значение поиска не найдено.Для моего конкретного поиска значения всегда будут найдены, так что это не должно быть проблемой.Я также отсортировал таблицу поиска в порядке возрастания, поскольку это было еще одной распространенной проблемой.Если я делаю то же самое vlookup в ячейке, оно работает без проблем

Sub VlookupIssues()

Dim lookUpValue As String
Dim result As Integer
Dim ws As Worksheet: Set ws = Sheets(3)
Dim wsFunc As WorksheetFunction: Set wsFunc = Application.WorksheetFunction

Sheet1.Activate
lookUpValue = Range("B1").Offset(2, 0).Value     'string "HR Manager"

Sheet3.Activate
result = wsFunc.VLookup(lookUpValue, ws.Range("A4:D42"), 3, False)

End sub

Таблица поиска выглядит так (с некоторыми строками выше / ниже):

Lookup Table

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Я настроил то же самое, и он работал нормально для меня.Я работаю в офисе 365. Предположим, что ваша проблема может быть связана с самой текстовой строкой, которую вы ищите, например с лишним пробелом, который не заметен?Кроме того, vlookup менее элегантен, чем использование функций индекса и соответствия, которые также не требуют сортировки.

Попробуйте что-то подобное:

0 голосов
/ 05 марта 2019

Ответ Натана вместе с изменением переменной результата с целого на двойное сделали трюк

Вы пробовали полный диапазон в Vlookup вместо ws, как worksheets("Sheetname").range("a2:d42")

Вместоиспользования ws, назначенных для листов (3) set ws=worksheets("Sheetname") - Nathan_Sav

...