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

如何使用VBA将合并行内容复制到单个单元格?求参考代码

合并行内容复制到单个单元格的VBA代码方案

你当前用Copy方法会直接复制单元格的合并格式,要只提取内容到单个单元格,得改用赋值单元格值的方式,而不是复制单元格本身。以下是两种场景的参考代码:

批量处理C列所有合并/非合并单元格

这个代码会遍历源表C列的所有单元格,把每个合并区域的内容放到目标表的单个单元格里,同时跳过重复的合并行:

Sub CopyMergedCellsToSingleCell()
    Dim SourceWS As Worksheet, TargetWS As Worksheet
    Dim lr3 As Long, lastr3 As Long
    Dim cell As Range
    
    ' 指定源工作表和目标工作表
    Set SourceWS = TargetWB.Sheets("RawData")
    Set TargetWS = TargetWB.Sheets("AFR")
    
    ' 获取源表C列最后一行行号
    lr3 = SourceWS.Cells(SourceWS.Rows.Count, "C").End(xlUp).Row
    ' 获取目标表C列下一个空行行号
    lastr3 = TargetWS.Cells(TargetWS.Rows.Count, "C").End(xlUp).Row + 1
    
    ' 遍历源表C列
    Set cell = SourceWS.Range("C1")
    Do While cell.Row <= lr3
        If cell.MergeCells Then
            ' 提取合并区域的内容,写入目标单元格
            TargetWS.Range("C" & lastr3).Value = cell.Value
            ' 跳过整个合并区域,避免重复处理
            Set cell = cell.MergeArea.Cells(cell.MergeArea.Cells.Count).Offset(1, 0)
        Else
            ' 非合并单元格直接赋值
            TargetWS.Range("C" & lastr3).Value = cell.Value
            Set cell = cell.Offset(1, 0)
        End If
        lastr3 = lastr3 + 1
    Loop
End Sub

单个合并单元格的快速赋值

如果只需要处理某个特定的合并区域,比如C1开始的合并行,直接用下面的代码替换你原来的Copy语句就行:

' 把源表C列合并区域的内容写入目标表指定单元格
TargetWB.Sheets("AFR").Range("C" & lastr3).Value = _
    TargetWB.Sheets("RawData").Range("C1").MergeArea.Cells(1).Value

关键说明

  • 合并区域的所有单元格值都是相同的,所以取第一个单元格的值就够了
  • 用.Value赋值只会传递内容,不会复制合并格式,目标单元格保持单个单元格状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 15:52:35