excel函数技巧:reduce压缩简写连续数字-趣帮office教程网

如图,A列数据是由任意自然数组成的不定长文本(100字符以内),文本中任一数字均大于前面的数字;如何将连续的数字进行压缩,如A2中1,2,3,4为连续数字,压缩为1-4,A2中11,12为连续数 字,压缩为11-12,以此类推,最终结果如B2所示;公式如下:

=LET(m,--TEXTSPLIT(A2,,","),

n,REDUCE(,m,LAMBDA(x,y,LET(

a,INDEX(m,XMATCH(y,m)-1),

b,IFERROR(INDEX(m,XMATCH(y,m) 1),0),

VSTACK(x,IF((y-1=a)*(y 1=b)," ",y))))),

o,SUBSTITUTE(TRIM(CONCAT(IFERROR(IF(--n,n&",")," "))),", ","-"),

LEFT(o,LEN(o)-1)

)

公式思路:本例公式主题思路是let函数,核心是reduce函数将不需要的数据转变为空格。

reduce函数的核心是index函数读取变量y上下两个数据并与y的连续性进行判断,如果结果确定保留还是替换为空格。

变量o将得到的数据进行变形转换,整理成想要的格式。