У меня есть формула массива, если на одном листе, глядя на второй лист, я обнаружил, что во время работы на втором листе все немного замедлилось из-за вычисления константы формулы массива на основе вновь вмененных данных в лист 2. Мне действительно нужно, чтобы он запускался, когда кто-то идет на лист один, чтобы просмотреть информацию. Я решил запрограммировать макрос для запуска при активации листа, затем вставить формулу массива в правильную ячейку, скопировать возвращенное значение, а затем вставить как значение, чтобы формула не оставалась активной.
Проблема, с которой я столкнулся, заключается в том, что мои макросы, похоже, не хотят вставлять мою формулу (я даже пытался использовать инструмент записи макросов, чтобы ввести формулу, и когда я пытаюсь перезапустить записанный макрос, происходит сбой). Я получаю «Невозможно установить свойство FormulaArray класса Range» в качестве моей ошибки.
Код выглядит следующим образом:
Range("U5").Select
Selection.FormulaArray = _
"=IF(ISERROR(INDEX('Maintenance Setup'!C3,SMALL(IF('Maintenance Setup'!C4=""Switchgear_Switchboard"",ROW('Maintenance Setup'!C4)-ROW(INDEX('Maintenance Setup'!C4,1,1))+1),RC[-1])))=TRUE,"""",INDEX('Maintenance Setup'!C3,SMALL(IF('Maintenance Setup'!C4=""Switchgear_Switchboard"",ROW('Maintenance Setup'!C4)-ROW(INDEX('Maintenance Setup'!C4,1,1))+1),RC[-1])))"
Формула отлично работает, когда я ввожу ее вручную , 'Maintenance Setup' - это лист, который содержит все данные, Switchgear_Switchboard - это какой-то текст, который ищет документ, и в формуле есть пробел "" "" "
Я также пытался получить код введите формулу, используя обозначение A1, а не R1C1
Спасибо.