У меня есть лист 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 + файлы каждый месяц для каждого клиента не будут выполнимыми, поэтому если существует что-то, что я пропускаю, сообщите мне.
Под Excel Tools | Calculations
можно установить режим вычисления. Если бы это установило на 'Automatic', то Excel должен обновить результаты формулы всех полей автоматически, также при открытии файла.
Установка Calculation может также быть установлена на отдельные рабочие листы, поэтому возможно, возможно, что сценарий Perl устанавливает ручной режим обновления.
При вставке ванильной функции Суммы, она работает - т.е. проблема может быть прослежена до компонента косвенного / комбинация адреса?
Вы попытались использовать СМЕЩЕНИЕ для создания диапазона, который будет суммирован? Например:
=SUM(OFFSET(B6,0,0,12,1))
Мог бы хвататься за соломинку, но Вы могли попробовать ссылку стиля 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)"
Возможно, Вы могли вызвать перерасчет целой электронной таблицы с этим:
http://msdn.microsoft.com/en-us/library/bb687891.aspx
Макро-переименование и с другой стороны переименование электронной таблицы должны хорошо работать. Возможно, Вы могли выполниться в в конце pearlscript? Я действительно не знаю слишком много о жемчуге извините.
Или используйте горячую клавишу CTRL+ALT+F9 и если она работает использование VBA с этой функцией: Приложение. CalculateFull
При использовании WriteExcel для сценариев жемчуга отметьте это с предложением в статье. парсинг функций INDIRECT & CONCATENATE и СУММЫ смешивания Ошибки формулы () и КОСВЕННЫЙ ()
К сожалению, электронная таблица:: синтаксический анализатор WriteExcel не может обработать формулы как этот. Электронная таблица:: WriteExcelXML может обработать их хотя, если можно использовать это.