excel - XLSXWriter 和 Excel "=FILTER()"功能?

标签 excel excel-formula xlsxwriter

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

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

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

enter image description here

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

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

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

XLSXWriter 在使用 =FILTER() 时是否有问题?功能?

最佳答案

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

Excel 2010 and later added functions which weren’t defined in the original file specification. These functions are referred to by Microsoft as future functions. Examples of these functions are ACOT, CHISQ.DIST.RT , CONFIDENCE.NORM, STDEV.P, STDEV.S and WORKDAY.INTL.


When written using write_formula() these functions need to be fully qualified with a _xlfn. (or other) prefix as they are shown the list below. For example:



worksheet.write_formula('A1', '=_xlfn.STDEV.S(B1:B10)')
They will appear without the prefix in Excel

然而,这个公式有一个 _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 没有。但是,我认为该公式按预期工作。您可以尝试在更复杂的示例中进行验证。
更新 :
这个公式不同于其他 Excel 公式的原因是因为它是新的 Dynamic array functions 之一。在 Excel 365 中添加。

关于excel - XLSXWriter 和 Excel "=FILTER()"功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60838976/

相关文章:

macos - Excel 在 CSV 导出中导出数百个空列

Excel VBA 错误取决于列的筛选方式

excel - 如何在 Excel 中将带有 "subscript"分数的数字转换为小数?

python - xlsxwriter 和 xlrd 问题 - xlsx 文件在一台计算机上保存为 ZIP,但在另一台计算机上保存其他前 4 个字节

python - 在 XlsxWriter 中写入后将格式应用于单元格

c# - 下载 Excel 文件

c++ - Qt 将数据从 form1 发送到 form2 TreeView 组件

excel - 用于在多个多行单元格中搜索 A 列中的项目并替换为其旁边的列中具有值的项目的公式

Excel - 从单列获取年份范围

python - 如何使用 XlsxWriter 阻止 Excel 以科学计数法显示数字?