Формула длинного массива, которая будет разбита на более мелкие части (VBA) - PullRequest
1 голос
/ 04 октября 2019

У меня есть длинная формула массива, которую я пытаюсь разбить на более мелкие части, чтобы применить ее через 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.

Так что мне интересно, кроме как решить эту проблему, что я делаю не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...