Excel:从表中筛选两列并在一列中输出

Excel:从表中筛选两列并在一列中输出

在 Excel 中,我有一个函数,可以输出使用 组合的几个表中的过滤内容VSTACK()

从我现在的示例可以看出,这有效,但只输出“姓名”。是否可以在同一列中输出“姓名姓氏”,就像我希望的示例一样?

我现在拥有的。

=LET(v, VSTACK(TableA, TableB), FILTER(INDEX(v, , 1), INDEX(v, , 3)=$I$2, "No students at this result"))

在此处输入图片描述

我希望得到什么。

在此处输入图片描述

我试图简化CONCAT()我想要输出的列,但是该FILTER()函数接受数组作为它的第一个参数,因此失败。

答案1

不要CONCAT()使用Ampersand-->&来组合两个数组,如示例所示:

在此处输入图片描述


=LET(
     v, VSTACK(TableA, TableB),
     FILTER(INDEX(v, , 1)&" "&INDEX(v,,2), INDEX(v, , 3)=$I$2, "No students at this result"))

此外,由于您可以VSTACK()使用TAKE()函数使公式变得更短:

=LET(
     _v,VSTACK(TableA,TableB),
     FILTER(TAKE(_v,,1)&" "&INDEX(_v,,2),TAKE(_v,,-1)=I2,"No students at this result"))

另一种方法是LAMBDA()使用BYROW()函数传递自定义计算:

=LET(
     _v,VSTACK(TableA,TableB),
     _f, FILTER(TAKE(_v,,2),TAKE(_v,,-1)=I2,"No students at this result"),
     BYROW(_f,LAMBDA(x, TEXTJOIN(" ",1,x))))

但请注意,使用TEXTJOIN()函数时需要注意,MSFT 文档如果结果字符串超出32767字符(单元格限制),返回#VALUE!错误。


相关内容