excel

关注公众号 jb51net

关闭
软件教程 > 办公软件 > excel >

再也不用VLOOKUP+辅助列了! excel中TOROW+FILTER公式真的是绝配

脚本之家

问题,要根据财务编码,查找状态为已结束,对应的全部立项编号。

早期,小编都是采用VLOOKUP+辅助列,这种说了几十次,就一笔带过,重点说TOROW+FILTER。

辅助列:

=IF(D2="已结束",B2&COUNTIFS(B$2:B2,B2,D$2:D2,"已结束"),"")

VLOOKUP:

=IFERROR(VLOOKUP($F2&COLUMN(A1),$A:$D,3,0),"")

时代变了,现在应该把更多的时间放在研究新函数上面,别老想着那些老函数。

假如现在要根据财务编码,查找全部对应的立项编号。

=FILTER(B2:B16,A2:A16=E2)

假如现在要根据财务编码,状态为已结束,查找全部对应的立项编号。也就是再增加一个条件。

=FILTER(B2:B16,(A2:A16=E2)*(C2:C16="已结束"))

当财务编码没有对应值的时候,返回错误值。

其实,FILTER函数还存在第三参数,可以让错误值显示空白。

=FILTER(B2:B16,(A2:A16=E8)*(C2:C16="已结束"),"")

语法:

=FILTER(返回区域,(条件区域1=条件1)*(条件区域2=条件2),错误值返回值)

到这里就解决了查找的问题,现在只需将一列的内容转换成一行。这时TOROW就派上用场。

=TOROW(FILTER(B2:B16,(A2:A16=E2)*(C2:C16="已结束"),""))

差点忘了说,这个公式因为需要下拉,区域记得锁定哦。除此之外,其他所有公式可以不用锁定,因为公式会自动拓展。

=TOROW(FILTER($B$2:$B$16,($A$2:$A$16=$E2)*($C$2:$C$16="已结束"),""))

问题解决了,下面再拓展一些案例。

1、将状态为已结束的内容自动引用出来

FILTER的返回区域,可以是一列,也可以是多列。

=FILTER(A2:C16,C2:C16="已结束")

2、将立项编号包含T的内容自动引用出来

条件判断的时候,支持嵌套其他函数。用FIND可以判断是否包含T,满足返回数字,不满足返回错误值。错误值会导致引用出错,再嵌套ISNUMBER。

=FILTER(A2:C16,ISNUMBER(FIND("T",B2:B16)))

3、将财务编码为101100001或101100012的内容自动引用出来

同时满足2个条件用*,满足其中1个条件用+(也就是或)。

=FILTER(A2:C16,(A2:A16="101100001")+(A2:A16="101100012"))

有条件的话,尽量安装Office365或WPS最新版,这样可以运用各种新函数,工作效率也会进一步提高。

推荐阅读:Excel数据筛选完美搭档! FILTER函数+切片器吊打下拉菜单