Я пытаюсь использовать таблицу в качестве ссылки для моей функции ВПР с помощью VBA, но, похоже, это не работает. Может ли кто-нибудь помочь мне? Я предполагаю, что я не называю столы должным образом.
Некоторая информация:
Range("Table_3[Status]") = Application.WorksheetFunction.VLookup(Range("Table_3[Part_Number]"), Range("Table1[[#All];[Part Number]:[Status]]"), 3, False)
Вы можете попробовать:
Option Explicit
Sub test()
Dim tbl1 As ListObject, tbl3 As ListObject
'Set you sheet
With ThisWorkbook.Worksheets("Sheet1")
'Set tables
Set tbl1 = .ListObjects("Table1")
Set tbl3 = .ListObjects("Table_3")
tbl3.ListColumns("Status").DataBodyRange.FormulaR1C1 = "=VLOOKUP([Part Number],Table1[#All],3,FALSE)"
End With
End Sub
Наверное, я не очень хорошо выразился. Если бы мне нужно было сделать это, используя ячейки рабочего листа, я бы просто заполнил столбец таблицы («Таблица_3 [Количество запасов]») этой формулой =VLOOKUP(Table_3[Part Number];Table1[[Part Number]:[Stock Qty]];3;0)
увидеть новый ответ
Вау круто! Я бы не знал, как это сделать! Я попробую это!
я буду ждать ваших отзывов
Я получил MsgBox с ошибкой «Определенная приложением или объектом». Почему-то он не может понять формулу
В строке "tbl3.ListColumns("Status").DataBody[...]"
убедитесь, что в таблице 3 есть столбец с именем «Статус»
Это сработало, если я переместил столбец Part Number в первый столбец таблицы (я знаю, что vlookup использует первый столбец, но мой массив не будет включать всю таблицу, а только 3 столбца из нее). Редактировать: поэтому сначала я попытался использовать "Table1[[#All];[Part Number]:[Status]]"
а не просто Table1[#All]
Но не получилось
Я не понимаю. Если я вручную вставлю в столбец Table_3 (Status) "=VLOOKUP([Part Number];Table1[[#All];[Part Number]:[Status]];3;FALSE)"
, это сработает. Если попытаться вставить его с помощью vba, это не сработает
не могли бы вы загрузить изображение ваших столов?
Извините за задержку. Я решил решить эту проблему, используя вместо этого циклы while...):
Я не думаю, что вы можете использовать VLOOKUP таким образом. первый аргумент должен быть значением, а не диапазоном.