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

Excel高效合并行内容求助:将非年份开头行内容合并至上一行

Excel合并非2022/2023开头行到上一行的高效方案

方法1:辅助列公式法(零代码,适合新手)

适合数据量不大的场景,步骤清晰:

  1. 标记年份行:在B1输入公式,下拉到所有行,标记出以2022/2023开头的行:
    =IF(OR(LEFT(A1,4)="2022",LEFT(A1,4)="2023"),1,0)
    
  2. 生成分组号:在C1输入1,C2输入公式下拉,让同一组(年份行+后续非年份行)共享同一个分组号:
    =C1+B2
    
  3. 合并同组内容:在D1输入数组公式(Excel 365直接回车,旧版本按Ctrl+Shift+Enter),下拉后即可得到合并后的内容:
    =TEXTJOIN(" ",TRUE,IF(C:C=C1,A:A,""))
    
  4. 清理数据:删除重复的分组行(只保留每个分组的第一行),再删除辅助列B、C即可。

方法2:VBA宏(批量处理,效率拉满)

适合数据量较大或需要重复操作的场景,操作步骤:

  1. 先备份Excel文件,防止数据丢失
  2. 按Alt+F11打开VBA编辑器,右键当前工作簿→「插入」→「模块」
  3. 粘贴以下代码,按F5运行宏:
    Sub MergeNonYearRows()
        Dim lastRow As Long
        Dim i As Long
        lastRow = Cells(Rows.Count, "A").End(xlUp).Row
        
        i = 1
        Do While i <= lastRow
            '判断当前行是否以2022/2023开头
            If Not (Left(Cells(i, "A").Value, 4) = "2022" Or Left(Cells(i, "A").Value, 4) = "2023") Then
                '追加到上一行末尾
                Cells(i - 1, "A").Value = Cells(i - 1, "A").Value & " " & Cells(i, "A").Value
                '删除当前行
                Rows(i).Delete
                lastRow = lastRow - 1 '更新最后一行行号
            Else
                i = i + 1 '仅年份开头行向下遍历
            End If
        Loop
    End Sub
    

方法3:Power Query(可重复自动化,适合大数据)

适合需要定期处理同类数据的场景,步骤:

  1. 选中数据区域,点击「数据」选项卡→「从表格/区域」(Excel 2016及以上版本)
  2. 在Power Query编辑器中:
    • 添加自定义列,输入公式判断是否为年份开头:
      = Text.StartsWith([Column1], "2022") or Text.StartsWith([Column1], "2023")
      
    • 添加索引列(从0开始),再添加分组标识列:用「添加列」→「索引列」→「从0开始」,然后添加自定义列:
      = List.Sum(List.Range(#"添加索引"[自定义],0,[索引]+1))
      
    • 按分组标识列分组:点击「转换」→「分组依据」,分组列选刚才的分组标识,操作选「所有行」,然后添加自定义列合并内容:
      = Text.Combine([Grouped Rows][Column1], " ")
      
    • 删除多余列,只保留合并后的列,关闭并上载到Excel。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 11:56:34