Google Sheets中如何将FILTER结果的两列合并为带连字符的单列?
Google Sheets 筛选后合并两列为带连字符的单列方案
原始表格
A B C - - - 1 A I 1 2 B J 0 3 C K 0 4 D L 1 5 E M 1 6 F N 0 7 G O 0 8 H P 1
已完成的筛选
使用公式 =FILTER(A1:B8, C1:C8=1) 得到筛选结果:
E F - - A I D L E M H P
需求
将上述筛选结果的E、F两列合并为单列,每行格式为「内容 - 内容」,期望输出:
E ----- A - I D - L E - M H - P
尝试过的无效公式
- 公式
=TEXTJOIN(" - ", TRUE, FILTER(A1:B8, C1:C8=1)),结果为A - I - D - L - E - M - H - P,所有内容连成一行,不符合需求; - 公式
=TRANSPOSE(QUERY(TRANSPOSE(FILTER(A1:B8, C1:C8=1)),, 9^9)),得到单列但无连字符:
J ----- A I D L E M H P
可行公式方案
方案1:BYROW + LAMBDA(推荐)
=BYROW(FILTER(A1:B8, C1:C8=1), LAMBDA(row, TEXTJOIN(" - ", TRUE, row)))
原理:BYROW遍历FILTER返回的每一行数据,LAMBDA定义行处理逻辑——用TEXTJOIN将该行两个单元格内容用「 - 」连接,最终输出符合格式的单列结果。
方案2:ARRAYFORMULA + 索引拼接
=ARRAYFORMULA(INDEX(FILTER(A1:B8, C1:C8=1),,1)&" - "&INDEX(FILTER(A1:B8, C1:C8=1),,2))
原理:用INDEX分别提取FILTER结果的第一列和第二列,通过&运算符将两列内容与「 - 」拼接,ARRAYFORMULA实现批量处理所有行。
内容的提问来源于stack exchange,提问作者Leonardo
相关产品推荐
相关产品推荐

