У меня есть скрипт на python 3.7, который был разработан с использованием библиотеки OPENPYXL (v2.5.10) для получения данных из ряда рабочих книг Excel, обработки этих данных и последующей записи в отдельную рабочую книгу Excel. Рабочая таблица результатов содержит около 100 именованных диапазонов и многочисленные формулы, все из которых работают должным образом, включая автоматический расчет при открытии книги в Excel.
У меня проблемы с одной конкретной группой формул, которая включает функцию AGGREGATE. В этом случае формула записывает данные в рабочую книгу, в правильную ячейку и в правильной форме. В то время как другие формулы показывают результирующее значение при открытии рабочей книги, эта последовательность формул показывает результат, только если вы выберете ячейку, поместите курсор на панель формул (как если бы вы редактировали формулу), а затем нажали ввод / возврат ключ. В формулу не вносятся изменения или правки. Как только вы это сделаете, формула будет работать, как и ожидалось.
Я проверил это на последних версиях Excel для MacOS и Windows, и у меня такое же поведение. Я должен добавить, что использование опций «Рассчитать сейчас», CtrlShiftAltF9 и «Рассчитать лист» не оказывает никакого влияния Единственный раз, когда формула рассчитывается, это если вы используете клавишу ввода / возврата.
Код, который записывает формулу:
activeSheet.cell (row, col) .value = f "= IFERROR (INDEX ({rngData}, AGGREGATE (15,3, ({rng} = {cellRef}) / ({rng} = {cellRef}) * ROW ({} ГСЧ), {} п-й), {colIndex}), \ "\") "
, который дает, например, правильный результат в ячейке книги Excel как:
= IFERROR (INDEX (_monthAgedDebt_Data, AGGREGATE (15,3, (_ monthAgedDebt_ProjectNumbers = $ L $ 4) / (_ monthAgedDebt_ProjectNumbers = $ L $ 4) * ROW (_monthAgedDebt_ProjectNumbers), 1), 1014, 6), 6))
Итак, в итоге:
- код работает так, как записывает правильную формулу в правильную ячейку и в правильной форме
- в Excel формула не рассчитывается автоматически, а работает, только если вы редактируете формулу в ячейке, не вносите изменений и нажимаете ввод / возврат для выхода из редактирования
Это проблема с AGGREGATE, производящим результат массива? Я выбрал эту форму формулы главным образом потому, что вам не нужен CTL-SHIFT-ENTER, чтобы она работала. Если вы введете его непосредственно в ячейку в Excel, вы можете ввести его как обычную формулу.
Мне не удалось найти справку по переполнению стека, кроме этой one . Однако предлагаемое здесь решение тоже не работает.
Этот вопрос ставит аналогичную проблему, но не имеет соответствующих ответов.
Этот вопрос может содержать подсказку, но я, кажется, не могу заставить это работать также.
Любые мысли о том, как исправить эту проблему, приветствуются. Я не уверен, является ли это проблемой openpyxl или проблемой Excel, и не уверен, что еще нужно проверить.