大数跨境
0
0

Excel多条件筛选:这些新方法值得推荐

Excel多条件筛选:这些新方法值得推荐 Excel Plus---不止是Excel
2025-11-11
2
所谓多条件筛选,我个人理解主要有两大类,一类其实只有一个条件列,只不过这个条件列有多个条件,如Filter()函数:万能的筛选函数中所提到的案例,条件只有一个,就是城市,不过要筛选出多个城市所对应的值,这些条件是"或"的关系,满足条件之一就可以。
另一类则是有多个条件列,不同的条件列有不同的条件,这些条件可能是"与"的关系,也可能是"或"的关系
对于第一类的这个案例,当然可以使用传统的方法("与"的话,多个条件之间相乘,"或"的话,多个条件之间相加),也可以使用推荐的公式:

=FILTER(A1:A10,BYROW(B1:B10=TOROW(D2:D5),OR))

=FILTER(A1:A10,BYROW(--(B1:B10=TRANSPOSE(D2:D5)),SUM))

还有其它方法吗?当然是有的,不过首先要学习N函数和T函数,按字面理解,N就是Number, 把参数尽量转换成数字,T就是Text,把参数尽量转换成文本。
还是相同的案例,做一点改变,就可以使用XLOOKUP, VLOOKUP把符合的数据一次性提取出来,不用把公式往下拖。

=XLOOKUP(T(IF({1},D2:D5)),B1:B10,A1:A10)

做的一点改变就是将条件区域前加上T函数和if函数:T(IF({1},D2:D5))

=VLOOKUP(T(IF({1},D2:D5)),IF({1,0},B1:B10,A1:A10),2,0)

同XLOOKUP类似,唯一不同的是用IF{1,0}将源数据中两列的位置调换一下,因为VLOOKUP不支持结果列在索引列的左边,只能是在右边。

上面的条件是文本型的,使用的是T函数,如果是数字型的,则相应的要将T函数换成N函数。
现在通过另外一个案例介绍第二类的多条件筛选。目的是将“部门”中“销售”或者"技术”的员工筛选出来,常规的公式如下,缺点就是如果条件太多,这个公式就冗长:

=FILTER(A2:C11,(A2:A11="销售")+(A2:A11="技术"))

第一个改进的方法就是嵌套BYROW+CHOOSECOLS函数,{1}表示第1列,如果是第一列,第二列则可以用{1,2}, 这个方法的一个缺点就是只能适用于肯定的条件,不能用于否则的条件(尤其是有肯定,同时又有否定的条件,如不是销售部门):

=FILTER(A2:C11,BYROW(--(CHOOSECOLS(A2:C11,{1})={"销售","技术"}),SUM))

第二个改进的方法是使用下列公式:

=LET(source,A2:C11,     f,LAMBDA(m,CHOOSECOLS(source,m)),

     a,f(1)="销售",

     b,f(1)="技术",

     FILTER(source,a+b))

看起来复杂,然而逻辑结构非常清楚,f(1)中的“1”指的是源数据中的第1列,如果是第2列则是f(2),多个条件可以共同使用lambda函数,然后这些条件的关系体现在最后一行,如本例 filter(source,a+b)。
现在改变一下筛选条件,要提取不是财务部门,同时是经理职位的数据。常规的公式:

=FILTER(A2:C11,(A2:A11<>"财务")*(B2:B11="经理"))

改进的公式:

=LET(source,A2:C11,     f,LAMBDA(m,CHOOSECOLS(source,m)),

     a,f(1)<>"财务",

     b,f(2)="经理",

     FILTER(source,a*b))

这个公式的好处在于拓展性特别强,可以表达多个条件,多条件的关系只体现在最后一行。


【声明】内容源于网络
0
0
Excel Plus---不止是Excel
分享20年外企供应链工作经验中关于EXCEL函数,公式,数组, VBA编程, PYTHON编程, POWER BI, POWER AUTOMATE, R语言编程等方面的实操以及技巧。
内容 44
粉丝 0
Excel Plus---不止是Excel 分享20年外企供应链工作经验中关于EXCEL函数,公式,数组, VBA编程, PYTHON编程, POWER BI, POWER AUTOMATE, R语言编程等方面的实操以及技巧。
总阅读41
粉丝0
内容44