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

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

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

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

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

какие предложения? Редактирование 200 + файлов каждый месяц для каждого клиента не будет возможным, поэтому, если есть что-то, что мне не хватает, пожалуйста, дайте мне знать.

22
задан Lance Roberts
11.05.2023 16:11 Количество просмотров материала 2363
Распечатать страницу

5 ответов

Если вы вставляете функцию vanilla Sum, она работает-т. е. Можно ли проследить проблему до компонента комбинации косвенного / адреса?

пробовали ли вы использовать OFFSET для создания суммируемого диапазона? Например:

=SUM(OFFSET(B6,0,0,12,1))
3
отвечен Diem 2023-05-12 23:59

может быть, схватился за соломинку, но вы можете попробовать ссылку на стиль 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
отвечен chris neilsen 2023-05-13 02:16

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

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

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

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

1
отвечен Darokthar 2023-05-13 04:33

Если вы используете WriteExcel для скриптов perl, обратите внимание на это, с предложением в статье. парсинг косвенные & сцепить функции и Формула ошибки смешивания SUM () и INDIRECT()

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

1
отвечен datatoo 2023-05-13 06:50

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

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

0
отвечен Jawa 2023-05-13 09:07

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх