=FILTER(A1:A10,BYROW(B1:B10=TOROW(D2:D5),OR))
=FILTER(A1:A10,BYROW(--(B1:B10=TRANSPOSE(D2:D5)),SUM))
=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不支持结果列在索引列的左边,只能是在右边。
=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))
=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))

