VLOOKUP Formula помещает апостроф перед текстом и генерирует ошибку времени выполнения '1004' - PullRequest
0 голосов
/ 04 мая 2018

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

Dim wb_Final As Workbook, nameFinal As String
Set wb_Final = Workbooks.Open(Filename:=Final_Directory)
nameFinal = wb_Final.Name



Dim wb_Summary As Workbook, nameSummary As String
Set wb_Summary = Workbooks.Open(Filename:=Summary_Directory)
nameSummary = wb_Summary.Name

wb_Summary.Sheets("Sheet 1").Activate
With Sheets("Sheet 1")
.Range("AT4:AT5000").Formula = "=IF(OR(AX1=""Open"",AX1=""Won"",AX1=""Won - Pending""),""Yes"",""No"")"
.Range("AU4:AU5000").Formula = "=VLOOKUP(W:W,LOVs!H:I,2,FALSE)"
.Range("AV4:AV5000").Formula = "=IF(IFERROR(VLOOKUP($A:$A,'[" & nameFinal & "]DATA'!$A:$AK,34,FALSE),0)=0,"",VLOOKUP($A:$A,'[" & nameFinal & "]DATA'!$A:$AK,34,FALSE))"
.Range("AW4:AW5000").Formula = "=IF(IFERROR(VLOOKUP($AV:$AV,'[" & nameFinal & "]DATA'!$AH:$CX,48,FALSE),0)=0,"",VLOOKUP($AV:$AV,'[" & nameFinal & "]DATA'!$AH:$CX,48,FALSE))"
'....More formulas similar to above
End With

Первые две формулы помещаются в ячейки и вычисляются без проблем.

Третья формула помещается в ячейки в виде текста с апострофом перед ним в Excel. (т.е. '=IF(IFERROR(VLOOKUP...)

Четвертая формула генерирует Ошибка времени выполнения '1004'

Я пробовал все различные типы формул:

.Formula .FormulaR1C1 .FormulaLocal .FormulaR1C1Local

И все равно получите ту же ошибку.

Мне кажется, что я сталкиваюсь с подобной проблемой, описанной в этой статье , но я не могу использовать функцию Application.Vlookup без переопределения всех массивов и ссылок на столбцы в моих текущих функциях VLOOKUP. (что займет ОЧЕНЬ много времени).

Любая помощь будет высоко ценится

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

Попробуйте

With Worksheets("Sheet 1") '>== or Sheet1 depending on actual name
    .Range("AW4:AW5000").Formula = "=IF(IFERROR(VLOOKUP($AV:$AV,[" & nameFinal & "]DATA!$AH:$CX,48,FALSE),0)=0,"""",VLOOKUP($AV:$AV,[" & nameFinal & "]DATA!$AH:$CX,48,FALSE))"
End With
0 голосов
/ 05 мая 2018

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

VLOOKUP($A:$A,""[" & nameFinal & "]DATA""!$A:$AK,34,FALSE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...