【问题标题】:How to insert array formula in an Excel sheet with openpyxl?如何使用 openpyxl 在 Excel 工作表中插入数组公式?
【发布时间】:2019-12-09 10:23:53
【问题描述】:

我正在使用 OpenPyxl 创建和修改 Excel 工作表。 我在 Excel 中有以下公式:

=(SUM(IF(LEFT(Balances!$B$2:$B$100,LEN($B4))=$B4,Balances!$D$2:$D$100)))

这个公式是一个“数组公式”,但是为了手写它,我必须用 CTRL+SHIFT+ENTER 完成(因为它是一个数组公式)。 这个变换然后公式如下:

{=(SUM(IF(LEFT(Balances!$B$2:$B$100,LEN($B4))=$B4,Balances!$D$2:$D$100)))}

我希望能够使用以下代码通过 OpenPyxl 编写此公式:

    sheet.cell(row=j, column=i).value = '{=(SUM(IF(LEFT(Balances!$B$2:$B$100,LEN($B4))=$B4,Balances!$D$2:$D$100)))}'

但是,它不起作用。 OpenPyxl 无法管理它。它给了我写的公式但不起作用。

我可以用 XLSX Writer 做到这一点 https://xlsxwriter.readthedocs.io/example_array_formula.html 但是 XLSX 编写器不适用于已创建的文件。

我看不到要走的路。

【问题讨论】:

标签: python excel excel-formula openpyxl


【解决方案1】:

使用worksheet.formula_attributes 设置数组公式。将公式放在所需的单元格中,本例中为 A1。然后将formula_attributes 设置为要应用公式的单元格区域。

ws["A1"] = "=B4:B8"
ws.formula_attributes['A1'] = {'t': 'array', 'ref': "A1:A5"}

【讨论】:

  • 请您解释一下,ref 属性是如何工作的?例如,我输入了一个公式ws['D1'] = "=SUM(A1:A5*B1:B5)",然后是ws.formula_attributes['D1'] = {'t': 'array', 'ref': "D1:D1"}。这行得通,但我可以始终将ref 设置为单元格的坐标吗?
  • 我找到了ref属性here“公式适用的单元格范围。[...]”的描述,但这对我没有多大帮助:)
猜你喜欢
  • 1970-01-01
  • 2023-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-10
  • 2015-11-18
相关资源
最近更新 更多