【问答回复贴】WPS表格-TEXTSPLIT、TEXTJOIN函数妙用-相邻连续相同值合并

Tam Kingsley
Tam Kingsley

创作者俱乐部成员

【问答回复贴】

🔔

链接:合并多个单元格文本内容如何做到去除重复值 https://bbs.wps.cn/topic/39694

【实现思路】

在社区里看到这样一个问题,问题是需要将多个行程合并为一个行程,其中各个城市之间用“-”连接,合并时需要将相邻相同的城市合并为一个,为了明确实现效果,帖主把实现的最后效果的截图也附上了~

在看了题目后,第一映入脑海中的思路就是先将左侧所有单独行程的城市名拼接好然后再提取出来形成一个新数组,然后就是将数组中相邻两个元素一样的城市名合并为一个,最后再使用TEXTJOIN函数将他们用“-”重新连接起来形成最后的结果,按照这个思路,下面分别选择对应的函数实现~

【实现步骤】

第一步-将行程的城市先拼接起来再转换为城市名数组,我们可以使用TEXTJOIN和TEXTSPLIIT函数~

TEXTSPLIT(TEXTJOIN("-",TRUE,A1:A8),"-")

第二步-将相邻的两个元素一样的城市名合并为一个,形成过程数组~

过程中我们使用REDUCE函数、TAKE函数、IF函数和VSTACK函数,其中C1#是上面C1:R1的数组,下面简单解析一下,使用REDUCE函数是为了对C1#数组进行迭代,VSTACK函数对结果值进行堆叠,IF函数对过程数据进行判断,TAKE函数负责获取过程堆叠数组取最后一个值,以C1#数组迭代至第二个元素进行第三次迭代时解释,此时迭代出来的结果是【福建南,厦门】,此时进行第三次迭代,通过TAKE函数,我们可以取出此时过程数组最后一个元素【厦门】,然后来到IF语句时通过与C1#数组第三个元素【厦门】对比,不符合TAKE(x,-1)<>y,所以保持过程数组x也就是【福建南,厦门】,然后以此类推进行下一轮的迭代,最后达到相邻相同元素去重的效果~

REDUCE(,C1#,LAMBDA(x,y,IF(TAKE(x,-1)<>y,VSTACK(x,y),x)))

第三步-将上述获得的过程数组,通过TEXTJOIN函数使其再次拼接起来形成最终结果~

其中C2#为C2:C10数组~

TEXTJOIN("-",TRUE,C2#)

第四步-整合公式

通过以上的过程其实已经得出了结果值,但为了让他更加紧凑,我们可以把它们合并为一个公式~

LET(a,TEXTSPLIT(TEXTJOIN("-",TRUE,A1:A8),,"-"),b,REDUCE(,a,LAMBDA(x,y,IF(TAKE(x,-1)<>y,VSTACK(x,y),x))),TEXTJOIN("-",TRUE,b))
🔔

总结以上用到了TEXTJOIN、TEXTSPLIT、REDUCE、LAMBDA、IF、TAKE、VSTACK和LET函数

【灵光一现】

就在构思这篇文章时,突然想到了一个更加简单的方法,为了让贴主可以第一时间知道结果,已经先在提问帖评论那里补充回复了,这里就简单再补充进来了~

TEXTJOIN("-",TRUE,TEXTSPLIT(A1:A8,,"-"))&"-"&TEXTAFTER(TAKE(A1:A8,-1),"-")

【互动补充】

经过以上的灵光一现,发现除了以上写的方法外,其实还有更多函数写法可以更加便捷的实现,期待各位老师能提供更加便捷的方法,也可以更加好地学习和感受函数的魅力~

WPS版本

WPS64位内测版(12.1.0.17726-release)

系统版本

Windows11

广东省
浏览 422
3
5
分享
5 +1
12
3 +1
全部评论 12
 
1231393578237
学习了
· 四川省
回复
Tam Kingsley
Tam Kingsley

创作者俱乐部成员

互相学习,互相进步~
· 广东省
回复
 
阿武
阿武

WPS函数专家

这样呢:=TEXTJOIN("-",,TEXTBEFORE(A1:A7,"-"))&"-"&A8
· 广东省
回复
Tam Kingsley
Tam Kingsley

创作者俱乐部成员

学习了,还是啊武老师的思路简单~
· 广东省
回复
 
HC.旋
学习了
· 福建省
回复
Tam Kingsley
Tam Kingsley

创作者俱乐部成员

互相学习~
· 广东省
回复
 
亂雲飛渡
学习了
· 广东省
回复
Tam Kingsley
Tam Kingsley

创作者俱乐部成员

互相学习~
· 广东省
回复
 
清华学弟任泽岩
清华学弟任泽岩

创作者俱乐部成员

步骤很清晰,学习了!
· 辽宁省
回复
Tam Kingsley
Tam Kingsley

创作者俱乐部成员

跟老师学习~
· 广东省
回复