Excel не правильно перевычисление значений

У меня есть лист Excel со значениями в нем (этот лист сгенерирован пользовательским сценарием жемчуга, но я не думаю, что это - то, где проблема заключается). В нем у меня есть формула:

=sum(indirect(concatenate(address(6,column()),":",address(17,column()))))

Цель этой формулы состоит в том, чтобы дать мне SUM() из ячеек в текущем столбце, между строками 6 и 17. В электронной таблице Gnumeric, как только я открываю файл, это работает. Но в Excel (и 2003 и 2007), открывая файл дает #VALUE! ошибки в полях с этой формулой, указывая, что INDIRECT звоните со значениями $B$6:$B$17 приведет к ошибке.

Вот петля в проблеме. Если я редактирую поле (через F2), и не внесите изменения и совершите нападки, входят, обновление значений. Кроме того, кажется, если я сохранил файл как .xlsx (формат Excel 2007), обновление значений после открытия. К сожалению, я не уверен то создание xlsx возможность с модулями, что я использую, и многие наши клиенты, вероятно, не смогли бы использовать его так или иначе.

Какие-либо предложения? При редактировании 200 + файлы каждый месяц для каждого клиента не будут выполнимыми, поэтому если существует что-то, что я пропускаю, сообщите мне.

2
задан 05.06.2011, 08:24

5 ответов

Под Excel Tools | Calculations можно установить режим вычисления. Если бы это установило на 'Automatic', то Excel должен обновить результаты формулы всех полей автоматически, также при открытии файла.

Установка Calculation может также быть установлена на отдельные рабочие листы, поэтому возможно, возможно, что сценарий Perl устанавливает ручной режим обновления.

0
ответ дан 08.12.2019, 05:08

При вставке ванильной функции Суммы, она работает - т.е. проблема может быть прослежена до компонента косвенного / комбинация адреса?

Вы попытались использовать СМЕЩЕНИЕ для создания диапазона, который будет суммирован? Например:

=SUM(OFFSET(B6,0,0,12,1))
3
ответ дан 08.12.2019, 05:08

Мог бы хвататься за соломинку, но Вы могли попробовать ссылку стиля R1C1

=SUM(INDIRECT("R["&7-ROW()&"]C:R["&17-ROW()&"]C",FALSE))

Или если формулы всегда последовательно 19, установите стиль ссылки на R1C1

Application.ReferenceStyle = xlR1C1

Затем можно вставить формулу как

=SUM(R[-13]C:R[-2]C)

Обновление:

можно избежать потребности установить ReferenceStyle при помощи

<YourCellReference>.FormulaR1C1 = "=SUM(R[-13]C:R[-2]C)"
2
ответ дан 08.12.2019, 05:08

Возможно, Вы могли вызвать перерасчет целой электронной таблицы с этим:

http://msdn.microsoft.com/en-us/library/bb687891.aspx

Макро-переименование и с другой стороны переименование электронной таблицы должны хорошо работать. Возможно, Вы могли выполниться в в конце pearlscript? Я действительно не знаю слишком много о жемчуге извините.

Или используйте горячую клавишу CTRL+ALT+F9 и если она работает использование VBA с этой функцией: Приложение. CalculateFull

1
ответ дан 08.12.2019, 05:08

При использовании WriteExcel для сценариев жемчуга отметьте это с предложением в статье. парсинг функций INDIRECT & CONCATENATE и СУММЫ смешивания Ошибки формулы () и КОСВЕННЫЙ ()

К сожалению, электронная таблица:: синтаксический анализатор WriteExcel не может обработать формулы как этот. Электронная таблица:: WriteExcelXML может обработать их хотя, если можно использовать это.

1
ответ дан 08.12.2019, 05:08

Теги

Похожие вопросы