Excel技巧之FILTER函数

Excel技巧之FILTER函数,第1张

在以下示例中,我们使用公式 =FILTER(A5:D20,C5:C20=H2,"") 返回包含“苹果”(如单元格 H2 中所选定)的所有记录,如果没有“苹果”,则返回空字符串 ("")。

示例

用于返回多个条件的 FILTER

在此示例中,我们使用乘法运算符 ( ),以返回数组范围 (A5:D20) 中包含“苹果”且位于东部区域的所有值:=FILTER(A5:D20,(C5:C20=H1) (A5:A20=H2),"")。

在 Excel 2007 中,可以用以下公式满足题述要求(类表同步总表数据):

1. 肉类:=IFERROR(IF(INDEX(Sheet1!$C$1:$F$99,SMALL(IF(Sheet1!$B$1:$B$99="肉类",ROW($1:$99),4^8),ROW(A1)),COLUMN(A1))="","",INDEX(Sheet1!$C$1:$F$11,SMALL(IF(Sheet1!$B$1:$B$99="肉类",ROW($1:$99),4^8),ROW(A1)),COLUMN(A1))),"")

2. 蔬菜:将公式中的“肉类”换成“蔬菜”

3. 蛋类:将公式中的“肉类”换成“蛋类”

注1:该公式为数组公式,须“Ctrl+Shift+Enter”三键同按结束输入|

注2:为简洁起见,三张类表合在一张表内

注3:为便于验证,在总表中引入了类表

公式的结果如下图示:

总表及同表中的类表公式结果的图示

类表中公式结果的图示

前面那个账号没有财富值了。换个账号交流。

试了一下,最简单的。

ws['A3'].value = '=A1:D1'

打开文件不报错,但单元格公式前面自动加了@,内容只显示A1内容。

我用xlwings写入FILTER函数不报错,但也同样现象(公式前自动加@,只显示第一个单元格内容)。

顺着这个一路找下去,这应该就是python库是否支持处理动态数组问题了。

按我理解,

1)用xlwings或许可以,但得用UDF(自己定义函数功能),前提还得把xlwings插件安装到excel里(这就不友好了,我还需要把最后做好的软件分享给别人用,不能让人家电脑上也得装xlwings插件吧)。

2)用xlsxwriter确定可以,可问题是xlsxwriter不支持打开已有的excel文件,只能新建写入,

所以我本来的想法是,先选择一个区域单元格为整体,然后写入试试,但没找到具体代码方法。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/7854718.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存