Google Sheets中适配ARRAYFORMULA的TEXTJOIN改良及空格保留问题
修复Google Sheets中适配ARRAYFORMULA的TEXTJOIN改良公式(保留单元格内空格)
问题背景
需要实现可与ARRAYFORMULA协同使用、自动忽略空单元格的TEXTJOIN替代功能,但当前使用的公式会错误消除单元格内单词间的空格(如将“blue white”转为“bluewhite”),希望调整现有公式,在保留原有功能的同时修复该问题。
现有公式(存在空格丢失问题)
=ARRAYFORMULA(IFERROR( REGEXREPLACE( REGEXREPLACE( REGEXREPLACE( SUBSTITUTE( flatten(query(transpose(A3:F)&", ",,columns(A3:F))), " ", "" ), "\s|,", "😂" ), "^😂+|😂+$", "" ), "\b😂{1,}\b", ", " ) ))
替代方案(MAP版)
该方案需手动指定每一列,适配不同列数时修改成本高:
MAP(A3:A,B3:B,LAMBDA(a,b,TEXTJOIN(" ",TRUE,{a,b})) )
示例表格对比
| A1 | B1 | C1 | D1 | E1 | 预期text join结果 | 当前公式输出结果 | 期望输出结果 |
|---|---|---|---|---|---|---|---|
| red | white | blue white | red white | red, white, blue white, red white | red, white, bluewhite, redwhite, red, white, bluewhite, redwhite | red, white, blue white, red white, red, white, blue white, red white | |
| green | yellow | green, yellow | green, yellow, green, yellow | green, yellow, green, yellow | |||
| white | white | white, white | white, white, white, white | white, white, white, white | |||
| white | white | white, white | white, white |
优化后的公式
=ARRAYFORMULA(IFERROR( REGEXREPLACE( REGEXREPLACE( REGEXREPLACE( FLATTEN(QUERY(TRANSPOSE(IF(A3:F="",,A3:F&", ")),,COLUMNS(A3:F))), ",\s*$", "" ), ",\s*(?=,)", "" ), ",\s*", ", " ) ))
优化说明
- 移除原公式中
SUBSTITUTE(..., " ", "")步骤——正是这一步导致单元格内的空格被全部删除 - 改用
IF(A3:F="",,A3:F&", ")处理空单元格:仅为非空单元格添加后缀,,避免空单元格引入多余分隔符 - 通过三层REGEXREPLACE依次处理:
- 移除每行末尾多余的
, - 清除连续的
,(空单元格残留的无效分隔符) - 统一将分隔符规范为
,
- 移除每行末尾多余的
内容的提问来源于stack exchange,提问作者MMsmithH
相关产品推荐
相关产品推荐

