You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Excel公式将连续日期合并为日期范围存储到单个单元格

Excel合并连续日期为范围格式的公式实现方案

完全可以通过Excel公式实现该需求,根据你使用的Excel版本不同,可选择以下方案:

方案1:适用于Excel 365 / 2021及以上版本(单公式直接出结果)

假设你的日期数据存储在A2:A10区域,直接在空白单元格输入以下公式即可得到预期结果:

=TEXTJOIN(",",TRUE,
  LET(
    sorted, SORT(A2:A10),
    flag, SCAN(0,SEQUENCE(ROWS(sorted)),LAMBDA(a,i,IF(i=1,1,IF(INDEX(sorted,i)-INDEX(sorted,i-1)=1,a,a+1)))),
    grp, UNIQUE(flag),
    res, BYROW(grp,LAMBDA(g,
      LET(
        start, XLOOKUP(g,flag,sorted),
        end, XLOOKUP(g,flag,sorted,,,-1),
        IF(start=end,TEXT(start,"m月d日"),TEXT(start,"m月d")&"-"&TEXT(end,"d日"))
      )
    )),
    res
  )
)

公式逻辑说明:

  • 先用SORT对原始日期做升序排序,避免原始数据顺序混乱导致连续判断出错
  • 通过SCAN生成连续日期的分组标记:相邻差值为1的连续日期会分到同一组,标记值相同
  • 对每个分组提取起止日期:如果起止日期一致则输出单个日期,不一致则输出「x月x-x日」的范围格式
  • 最后用TEXTJOIN将所有日期段用中文逗号拼接

方案2:适用于Excel 2019及更早版本(辅助列实现)

低版本Excel不支持动态数组和LAMBDA函数,可通过辅助列实现:

  1. 第一步先将原始日期列按升序排序
  2. 辅助列B(分组标记):B2单元格输入=IF(A2-A1=1,B1,ROW()),下拉填充到所有数据行
  3. 辅助列C(提取唯一分组):C2单元格输入数组公式=IFERROR(INDEX(B:B,MATCH(0,COUNTIF(C$1:C1,B$2:B$10),0)+1),""),按Ctrl+Shift+Enter三键回车确认,下拉填充直到出现空白值
  4. 辅助列D(生成分组日期段):D2单元格输入=IF(INDEX(A:A,MATCH(C2,B:B,0))=INDEX(A:A,MATCH(C2,B:B,1)),TEXT(INDEX(A:A,MATCH(C2,B:B,0)),"m月d日"),TEXT(INDEX(A:A,MATCH(C2,B:B,0)),"m月d")&"-"&TEXT(INDEX(A:A,MATCH(C2,B:B,1)),"d日")),下拉填充到C列空白值对应的行
  5. 最后在结果单元格输入=TEXTJOIN(",",TRUE,D:D)即可得到拼接后的结果

注意事项:

  1. 上述公式中的A2:A10请替换为你的实际日期存储区域
  2. 请确保原始数据为Excel可识别的标准日期格式,而非文本格式,否则日期差值计算会失效

内容的提问来源于stack exchange,提问作者rexorsist

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 02:36:04