新函数ByRow,原来是Filter的超级辅助函数,筛选数据太...太好用了!

Excel精英培讯 2024-12-25 17:34:53

在新增的函数中,有一个看上去好象没什么用的函数,它就是ByRow。其实,它是一个宝藏函数,在筛选数据时超级实用。

一、作用

Excel是这么介绍的:将Lambda函数应用于第一行并返回结果的数组。

估计大部分看了上面的说明都会一头雾水:它和lambda函数有什么关系,为什么要提到它?先别急,向后看。

二、语法及参数说明

=Byrow(数组,Lambda(自定义参数,调用内置函数运算表达式))

数组:可以是多行多列的一组数(内存数组),也可以是单元格区域引用。Lambda:用来调取数组的每一行值进行运算自定义参数:可以自定义一个变量,逐一调取数组的每一行值。调用内置函数运算表达式:可以调用内置函数对自定义参数调取的行值进行求和、计数等运算。注意:当调用的函数参数只需自定义参数时(比如Sum、Count、or),则lambda()可以用该函数名称替代。例:Lambda(x,sum(x))可以用Sum替换,Byrow的语法可以简写为=Byrow(数组,函数名称)

三、示例

【例1】如下图所示,要求在E列计算1~6月A产品和B产品的合计

=BYROW(B2:C7,LAMBDA(X,SUM(X)))

公式说明:

B2:C7:引用的单元格区域X:自定义的参数,这里也可以A、B、D,你、我、他等字符(自己起的名称),但不能用C和R。用X可以逐行调取B2:C7中的每一行值。SUM(X):调用SUM函数对X(数组的每一行)进行求和

至此,同学们应该对Byrow的基本用法有所了解。接下来就是高能时刻了。介绍两个配合filter完成高难度筛选的示例,你就知道Byrow有多好用。

【例2】如下图所示,要求从左表中筛选刘国崇、王爱民和何长龙3人的消费记录。

G2公式:

=FILTER(A2:C22,BYROW(B2:B22={"王爱民","何长龙","刘国崇"},OR))

上面公式估计很多同学看不懂,兰色把公式拆分开来,看看byrow的运算原理。

B2:B22={"王爱民","何长龙","刘国崇"}

让B列的姓名和给定的姓名一一对比是否一样。由于{"王爱民","何长龙","刘国崇"}是一个多列数组(用,间隔是多列,用;间隔是多行)。所以得到了一个多行3列的结果。

某一行中只要有一个TRUE,就是要筛选的行,所以首先要想到用OR(条件1,条件2...)函数,而Byrow恰好可以逐行运算,所以它们俩个结合就可以完成逐行判断。

这...不就是filter第二个参数的判断条件吗?嘿嘿!

再看一个前天兰色遇到的一个提问,涉及匹配筛选。

【例3】如下图所示,要求从A列筛选出含鸡、梨、米和豆的所有行,结果如F列所示。

=FILTER(A2:A5867,BYROW(FIND(TOROW(D2:D5),A2:A5867),COUNT))

上面公式中,首要先用torow把D列关键字转换成列方向,这样才能让A列值和关键字逐一对比

=TOROW(D2:D5)

用find查找关键词在A列每个单元格是否存在,每行都会有4个查找结果。

只要有一个数字,说明A列该行值至少包含某一个关键词,就是我们要筛选的结果。而byrow配合Count恰好可以逐行统计数字个数。

=BYROW(FIND(TOROW(D2:D5),A2:A5867),COUNT)

最后把这个判断式放在filter的第2个参数,就可以筛选出正确的结果了。

0 阅读:0
Excel精英培讯

Excel精英培讯

欢迎大家关注我,给我点赞