如何使用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
相关产品推荐
相关产品推荐

