在以下示例中,我们使用公式 =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文件,只能新建写入,
所以我本来的想法是,先选择一个区域单元格为整体,然后写入试试,但没找到具体代码方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)