如何移除谷歌表格公式运算结果末尾的指定|分隔符
公式末尾多余|移除方案
你可以直接在原有拼接逻辑外层嵌套REGEXREPLACE函数实现需求,这是改动最小、实现最简便的方案,不需要调整原有内部逻辑,也不需要辅助列。
完整修改后公式
={"Product Category Test";ARRAYFORMULA(IF(ISBLANK(A2:A),"", REGEXREPLACE( VLOOKUP(A2:A,'Import Template'!A:DB,MATCH("Product Category",'Import Template'!A1:DB1,0),false)&"|"&IF(VLOOKUP(A2:A,'Import Template'!A:DB,MATCH("Automatic Categories",'Import Template'!A1:DB1,0),false)<>"",VLOOKUP(A2:A,'Import Template'!A:DB,MATCH("Automatic Categories",'Import Template'!A1:DB1,0),false),""), "\|$","" )))}
实现原理
REGEXREPLACE是正则替换函数,第二个参数的正则规则\|$仅会匹配字符串末尾位置的|字符- 匹配到末尾的
|后会直接替换为空值,不会影响字符串中间作为分隔符的|,完全符合使用要求
备选非正则方案
如果你不想使用正则函数,也可以用LEFT+LEN+RIGHT组合实现,逻辑是判断最后一位是否为|,是则截取到倒数第二位,否则返回原字符串:
={"Product Category Test";ARRAYFORMULA(IF(ISBLANK(A2:A),"", LET( concat_str,VLOOKUP(A2:A,'Import Template'!A:DB,MATCH("Product Category",'Import Template'!A1:DB1,0),false)&"|"&IF(VLOOKUP(A2:A,'Import Template'!A:DB,MATCH("Automatic Categories",'Import Template'!A1:DB1,0),false)<>"",VLOOKUP(A2:A,'Import Template'!A:DB,MATCH("Automatic Categories",'Import Template'!A1:DB1,0),false),""), LEFT(concat_str,IF(RIGHT(concat_str,1)="|",LEN(concat_str)-1,LEN(concat_str))) )))}
注:这里用LET函数把重复的拼接逻辑赋值为变量,避免重复计算,如果你使用的表格工具不支持LET,把concat_str对应的拼接逻辑替换进去即可。
内容的提问来源于stack exchange,提问作者Maladorf
相关产品推荐
相关产品推荐

