XLSXWriter and Excel“ = FILTER()” Function?

问题描述 投票:1回答:1

我正在使用XLSXWriter成功创建许多Excel工作簿。现在,我试图将Excel的新功能(截至2019年)中的FILTER函数之一放入单元格中:

=FILTER(A19:B90,B19:B90=E19)

当我打开工作簿时,Excel会给我这个错误对话框:

enter image description here

打开工作簿,但是单元格中有一个“ 0”,而不是FILTER函数。

但是如果我将完全相同的过滤器功能手动粘贴到同一单元格中,它将起作用!

我正在创建的所有其他公式均按预期工作,并且如果我使用XLSXWriter将通用函数放置到我希望过滤器进入的同一单元格中,例如=100 *5,它也可以工作。

XLSXWriter在使用=FILTER()函数时是否存在错误?

excel excel-formula xlsxwriter
1个回答
0
投票

这有点奇怪。从Formulas added in Excel 2010 and later上的XlsxWriter文档中:

Excel 2010及更高版本添加了原始文件规范中未定义的功能。 Microsoft将这些功能称为将来的功能。这些功能的示例是ACOTCHISQ.DIST.RTCONFIDENCE.NORMSTDEV.PSTDEV.SWORKDAY.INTL

[使用write_formula()编写时,这些功能需要使用_xlfn.(或其他)前缀进行完全限定,如下面的列表所示。例如:

worksheet.write_formula('A1', '=_xlfn.STDEV.S(B1:B10)')

但是,此公式的前缀为_xlfn._xlws.,它也是一个数组公式,因此您必须执行此操作:

import xlsxwriter

workbook = xlsxwriter.Workbook('test.xlsx')
worksheet = workbook.add_worksheet()

worksheet.write_array_formula('C1:D72', 
                              '=_xlfn._xlws.FILTER(A19:B90,B19:B90=E19)')

workbook.close()

输出

**enter image description here**

XlsxWriter输出和Excel的输出之间的一个区别是,这将数组公式显示为{FILTER(...)},并带有大括号,这是数组公式中的典型值,而Excel没有。但是,我认为该公式符合预期。您可以在更复杂的示例中进行尝试进行验证。

© www.soinside.com 2019 - 2024. All rights reserved.