如何用Lambda函数(REDUCE等)合并连续数字并简化显示?
Excel连续数字合并公式(Lambda系列函数实现)
直接在C2单元格输入以下公式(适用于Excel 365/2021及支持Lambda函数的版本):
=TEXTJOIN("; ",TRUE,REDUCE("",SCAN(0,FILTER(A:A,A:A<>""),LAMBDA(a,v,IF(v=a+1,a,a+1))),LAMBDA(res,grp,LET( curr_vals,FILTER(FILTER(A:A,A:A<>""),SCAN(0,FILTER(A:A,A:A<>""),LAMBDA(a,v,IF(v=a+1,a,a+1)))=grp), start_val,INDEX(curr_vals,1), end_val,INDEX(curr_vals,ROWS(curr_vals)), len_start,LEN(start_val), len_end,LEN(end_val), disp_text,IF(start_val=end_val,start_val,start_val&"-"&RIGHT(end_val,IF(len_end>len_start,len_end-len_start,len_end))), IF(res="",disp_text,res&"; "&disp_text) )))
公式拆解
- FILTER(A:A,A:A<>""):自动筛选A列非空单元格,避免空白干扰;
- SCAN分组:给连续数字分配相同的分组ID,非连续数字单独成组(比如序列
1,2,3,5,6会得到分组ID1,1,1,2,2); - REDUCE迭代处理:遍历每个分组,提取组内的起始值和结束值:
- 若组内只有一个值,直接保留原数字;
- 若为连续组,对比起始值和结束值的长度,提取结束值中与起始值不同的后缀部分,拼接成「起始值-后缀」格式;
- TEXTJOIN拼接:将所有分组的处理结果用「; 」连接成最终字符串。
示例效果
假设A列数据为:202401,202402,202403,202405,100,101,103,公式输出结果为:202401-03; 202405; 100-01; 103
内容的提问来源于stack exchange,提问作者VetExc
相关产品推荐
相关产品推荐

