У меня есть длинная формула массива, которую я пытаюсь разбить на более мелкие части, чтобы применить ее через VBA, вот рабочая формула (в Excel):
=IF(C7="MOR",IFERROR(IFERROR(INDEX($K$7:$K$43,MATCH(1,(E7=$I$7:$I$43)*("MOR"=$C$7:$C$43),0)),INDEX($K$7:$K$43,MATCH(1,(E7=$I$7:$I$43)*("AFT"=$C$7:$C$43),0))),INDEX($K$7:$K$43,MATCH(1,(E7=$I$7:$I$43)*("EVE"=$C$7:$C$43),0))),IF(C7="AFT",IFERROR(IFERROR(INDEX($K$7:$K$43,MATCH(1,(E7=$I$7:$I$43)*("AFT"=$C$7:$C$43),0)),INDEX($K$7:$K$43,MATCH(1,(E7=$I$7:$I$43)*("EVE"=$C$7:$C$43),0))),INDEX($K$7:$K$43,MATCH(1,(E7=$I$7:$I$43)*("MOR"=$C$7:$C$43),0))),IFERROR(IFERROR(INDEX($K$7:$K$43,MATCH(1,(E7=$I$7:$I$43)*("EVE"=$C$7:$C$43),0)),INDEX($K$7:$K$43,MATCH(1,(E7=$I$7:$I$43)*("AFT"=$C$7:$C$43),0))),INDEX($K$7:$K$43,MATCH(1,(E7=$I$7:$I$43)*("MOR"=$C$7:$C$43),0)))))
Это код вVBA:
Dim part1, part2, part3 As String
Dim part1, part2, part3 As String
part1 = "=IF(C7=""MOR"",IFERROR(IFERROR(INDEX($K$7:$K$43,MATCH(1,(E7=$I$7:$I$43)*(""MOR""=$C$7:$C$43),0)),INDEX($K$7:$K$43,MATCH(1,(E7=$I$7:$I$43)*(""AFT""=$C$7:$C$43),0))),INDEX($K$7:$K$43,MATCH(1,(E7=$I$7:$I$43)*(""EVE""=$C$7:$C$43),0))) ,(""XXX2"")) "
part2 = ",IF(C7=""AFT"",IFERROR(IFERROR(INDEX($K$7:$K$43,MATCH(1,(E7=$I$7:$I$43)*(""AFT""=$C$7:$C$43),0)),INDEX($K$7:$K$43,MATCH(1,(E7=$I$7:$I$43)*(""EVE""=$C$7:$C$43),0))),INDEX($K$7:$K$43,MATCH(1,(E7=$I$7:$I$43)*(""MOR""=$C$7:$C$43),0))) ,(""XXX3"") "
part3 = ",IFERROR(IFERROR(INDEX($K$7:$K$43,MATCH(1,(E7=$I$7:$I$43)*(""EVE""=$C$7:$C$43),0)),INDEX($K$7:$K$43,MATCH(1,(E7=$I$7:$I$43)*(""AFT""=$C$7:$C$43),0))),INDEX($K$7:$K$43,MATCH(1,(E7=$I$7:$I$43)*(""MOR""=$C$7:$C$43),0))))) "
With ActiveSheet.Range("W7")
.FormulaArray = part1
.Replace "XXX2", part2
.Replace "XXX3", part3
End With
Я получаю сообщение об ошибке
Ошибка времени выполнения '1004': невозможно установить свойство FormulaArray класса Range
здесь:
.FormulaArray = part1
Что я не могу понять, так это то, что если я скопирую и вставлю код VBA из непосредственного окна в Excel, формула не выдаст мне ошибки.
Я также посчитал символы, с пробелами их 246.
Так что мне интересно, кроме как решить эту проблему, что я делаю не так?