David Gard Asked: 2024-03-04 19:44:51 +0800 CST2024-03-04 19:44:51 +0800 CST 2024-03-04 19:44:51 +0800 CST Excel:过滤表中的两列并在一列中输出 772 在 Excel 中,我有一个函数,可以从使用 组合的多个表中输出过滤后的内容VSTACK()。 从我现在拥有的示例中可以看出,这可以工作,但只输出“名称”。是否可以在同一列中输出“姓名”,如我希望的示例所示? 我现在拥有的。 =LET(v, VSTACK(TableA, TableB), FILTER(INDEX(v, , 1), INDEX(v, , 3)=$I$2, "No students at this result")) 我希望拥有什么。 我尝试简化CONCAT()我希望输出的列,但该FILTER()函数接受数组作为第一个参数,因此失败。 microsoft-excel 1 个回答 Voted Best Answer Mayukh Bhattacharya 2024-03-04T19:57:54+08:002024-03-04T19:57:54+08:00 而不是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()then 使用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!。
而不是
CONCAT()
使用Ampersand
-->&
来组合两个数组,如示例所示:另外,由于您可以访问
VSTACK()
then 使用TAKE()
函数来使公式更短:另一种方法是
LAMBDA()
使用BYROW()
函数传递自定义计算:但请注意,使用
TEXTJOIN()
函数时需要注意,根据MSFT 文档,如果结果字符串超过32767 个字符(单元格限制),则会返回错误#VALUE!
。