连接字符
群友提问,有一列数字,我想:连续数字用“-”连接,不连续的“,”隔开,如下图:
连接字符分析:
咋一看挺简单,实际写公式:也简单......
我们将每一段连续数组,拆解为3部分:
起点数,中间数,终点数。
然后:
将“起点数”变为“,起点数”;
将“中间数”变为“ ”(空白);
将“终点数”变为“-终点数”。
最后连接所有字符即可。
结果图:
成果展示公式详解
比较简单,直接在原表添加2列辅助列:
辅助B列作用:将连续数的起始点提取出来,其他空白。
辅助C列作用:添加前缀,以便第3步的字符连接。
B3处公式B2手动复制一下,公式从B3处开始:
=IF((A3-A2)=1,"",A3),向下填充。
翻译:若本数减去上一个数=1,说明连续,返回空白;否则不连续,返回本数(本数亦即连续数的起始点)。
C3处公式C2手动复制一下,公式从C3处开始:
=IF(A3=B3,","&B3,IF(AND(B3="",B4<>""),"-"&A3,"")),向下填充。
翻译:判断连续数起点,添加前缀“,”;再判断连续数终点,添加前缀“-”;否则为中间数,返回空白。通过观察,可得简单判断依据:
若B3为起点数:A3=B3;
若B3为终点数:B3=“”且B4<>“”(B3为空,且B4不为空);
否则B3为中间数:其他即为中间数。
字符连接公式字符连接公式:
=TEXTJOIN(,,C:C)
翻译:略。
结语
再回头看一下思路:
我们将每一段连续数组,拆解为3部分:
起点数,中间数,终点数。
然后:
将“起点数”变为“,起点数”;
将“中间数”变为“”;
将“终点数”变为“-终点数”。
最后连接所有字符即可。
下期分享,我们下一次再见......
网友评论