Невозможно использовать формулу INDIRECT в VBA из-за апострофа в формуле - PullRequest
1 голос
/ 12 октября 2019

Однако я пытаюсь написать следующую формулу в VBA, так как формула содержит апостроф, часть после апострофа закомментирована. Может кто-нибудь помочь, пожалуйста?

Dim LastcolGen As Long, lastrowfilter As Long 

Range(Cells(6, 10), Cells(lastrowfilter, LastcolGen)).Formula = _
 "IF(J$4="FactTrancheValue",INDEX(INDIRECT(J$4),ROW()-4,MATCH(J$5,INDIRECT("'"&J$4&"'!"&"A1:JJ1"),0)),INDEX(INDIRECT(J$4),MATCH(INDIRECT(J$3&ROW()),INDIRECT("'"&J$4&"'!"&"A1:A999999"),0),MATCH(J$5,INDIRECT("'"&J$4&"'!"&"A1:JJ1"),0)))" 
Range(Cells(6, 10), Cells(lastrowfilter, LastcolGen)).Select 
Selection.Copy 
Selection.PasteSpecial Paste:=xlPasteValues

Спасибо, AB

1 Ответ

0 голосов
/ 13 октября 2019

Попробуйте это (не проверено)

Range(Cells(6, 10), Cells(lastrowfilter, LastcolGen)).Formula = _
    "=IF(J$4=""FactTrancheValue"",INDEX(INDIRECT(J$4)," & _
    "ROW()-4,MATCH(J$5,INDIRECT(""'""&J$4&""'!""&""A1:JJ1""),0))," & _
    "INDEX(INDIRECT(J$4),MATCH(INDIRECT(J$3&ROW())," & _
    "INDIRECT(""'""&J$4&""'!""&""A1:A999999""),0)," & _
    "MATCH(J$5,INDIRECT(""'""&J$4&""'!""&""A1:JJ1""),0)))"

(отредактировано в соответствии с вашим обновлением)

При установке этой формулы в одну ячейку я не получаю ошибок от VBA (хотя сама формула возвращает#REF!)

Если это не сработает, убедитесь, что ваша ссылка Range() верна.

...