excel

关注公众号 jb51net

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

Excel中利用FILTER和BYROW函数实现多列重复值查找的实例教程

脚本之家

在之前的教程中,我们利用XLOOKUP函数等技巧实现了在Excel中任意列的查找功能,能够返回同一行中对应列的值。但面临一个问题:当查找的值在多列中重复出现时,如何才能找到并返回所有匹配的结果呢?

问题背景与需求

以图1为例,我们希望在B列至C列中查找“郭靖”这个值。显然,第3行和第7行都包含了“郭靖”,但使用之前的方法,我们只能获取到第3行的结果。那么,如何才能获取到所有的匹配项呢?

如何获取所有包含“郭靖”的列中对应行的数据呢?

使用FILTER函数实现查找

这可以通过使用FILTER函数来实现。在单元格B10中输入以下公式:

=FILTER(A2:A7, BYROW(B2:J7, lambda(row, row=B9)))

执行后,结果将如图2所示,展示出所有包含“郭靖”的行中的A列数据

该公式运用了BYROW函数进行逐行比较,并结合了OR运算来处理每行的比较结果。BYROW函数会产生一个包含TRUE或FALSE值的数组,其中与单元格B9内容相匹配的行将返回TRUE,其余则返回FALSE。随后,FILTER函数会基于这个TRUE/FALSE数组,从A2:A7范围内提取出所有TRUE值对应的行,从而得到图2所示的结果。

FILTER+BYROW函数组合筛选数据

1、FILTER+BYROW函数组合实现快速对表格数据进行筛选

公式:

=VSTACK(A1:F1,FILTER(A2:F6,BYROW(B2:F6,SUM)>0))

2、BYROW+FILTER函数对多列数据求和筛选最大值

公式:

=LET(b,BYROW(B3:D8,SUM),FILTER(HSTACK(A3:A8,b),b=MAX(b)))

3、FILTER+BYROW函数组合筛选出有数据于60的人员姓名

公式:

=FILTER(A2:A6,BYROW((B2:D6<60)*(B2:D6),SUM))

4、FILTER+BYROW函数组合筛选出不为空的单元行

公式:

=FILTER(A1:B15,BYROW(ISNUMBER(FIND({"手机号","身份证","银行卡"},B1:B15))*1,SUM))

推荐阅读:

轻松实现行级数据计算! Excel2024新函数BYROW详解

传统筛选点到手抽筋? excel中FILTER函数让你告别手动筛选的烦恼