2017-02-11 16 views
1

Если у вас небольшой диапазон, содержащий относительно длинный массив формул (см. Ниже). Когда я вычисляю диапазон с application.calculate или любые его варианты значения не вычисляются (ничего не возвращается), но когда я делаю ячейки «грязными» и нажимаю [F9], значения рассчитываются и отображаются.Excel VBA application.calculate и его вариации не вычисляют массивы формул, но клавиша F9 делает

Есть ли способ сделать application.calculate или любые его варианты mimic [F9] точно?

Формула массива:

=IFNA(INDEX(INDEX(rangename_003,,COLUMN(rangename_004)),MATCH(ROW(rangename_004),IF(INDEX(rangename_003,,COLUMN(rangename_004))="",-1,COUNTIF(INDEX(rangename_003,,COLUMN(rangename_004)),"<"&INDEX(rangename_003,,COLUMN(rangename_004)))+1),0)),"")

+0

@charleswilliams one for вы – brettdj

ответ

1

Предполагая, что у вас есть объект диапазона, ссылающийся формулу массива, то
Если вы находитесь в режиме ручного расчета попробовать

theRange.CurrentArray.Calculate 

Если вы находитесь в автоматическом режиме попробуйте

theRange.CurrentArray.Dirty 
theRange.CurrentArray.Calculate 
+0

Ничего из [rangename] .calculate или application.calculate работать. Клавиша [F9] работает отлично. Даже после того, как расчеты были успешно выполнены с [F9], а затем выполняется процесс ввода. Калькуляция выполняется, значения снова исчезают. – m8rc28

+0

Работает нормально для меня: что такое ссылка rangename_003 и rangename_004, и каков адрес ячейки формулы массива? –

+0

Например: rangename_004 - «A1: E5» и не содержит никаких данных и используется только для извлечения относительных номеров столбцов и строк, rangename_003 - «G10: K14» и содержит данные для сортировки. Диапазон формул: «M10: Q14». – m8rc28