VBA VLOOKUP Преобразование в значения дает # N / A - PullRequest
2 голосов
/ 15 ноября 2010

У меня проблемы с VLOOKUP в моем VBA. Вот пример кода, который я использую:

Sub Macro15()
'
' Macro15 Macro
Dim LR As Long
LR = Cells(Rows.Count, "A").End(xlUp).Row
Range("B1:B" & LR).FormulaR1C1 = _
"=VLOOKUP(RC[-1],'https://internal_sharepoint_address
    /[Vendor_Information.xlsx]Sheet1'!R3C3:R150C18,4,FALSE)"
Range("C1:C" & LR).FormulaR1C1 = _
    "=VLOOKUP(RC[-2],'https://internal_sharepoint_address
/[Vendor_Information.xlsx]Sheet1'!R3C3:R150C18,5,FALSE)"
With Range("B1:C" & LR)
.Value = .Value
End With
End Sub

Проблема в том, что значения в столбцах B & C (формулы VLOOKUP) возвращают значение # N / A.

Однако, если я остановлю код перед преобразованием формулы в значения (строка «С диапазоном (« B1: C »и LR)») », формула VLOOKUP возвращает правильные значения.

Также странно - если я очищу содержимое столбцов B & C и перезапущу приведенный выше код, значения вернутся нормально. Однако, если я пытаюсь добавить второй цикл в VBA, он НЕ работает.

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

Спасибо всем, David

1 Ответ

1 голос
/ 15 ноября 2010

Возможно, вам потребуется добавить шаг, который запускает цикл расчета, прежде чем пытаться заменить его значением:

Application.Calculate

Редактировать из комментария. Я полагаю, что получение справочных данных из связанной книги на сайте Sharepoint займет некоторое время. Может быть, добавить несколько петель задержки? Можете ли вы сделать два отдельных макроса (один, заканчивающийся формулами, а второй, начинающийся с Вставить значения), и запускать их отдельно с паузой между ними?

...