VBA 如何修改代码以复制不含表头的指定单元格区域数据
VBA代码调整方案
调整后可直接运行的代码
' 仅清空input_4表头下方的数值,保留第1行原有表头 wbMe.Sheets("input_4").Range("A2:D" & wbMe.Sheets("input_4").Rows.Count).ClearContents With wb.Sheets("vintage_agr") ' 定位vintage_agr表A列最后一行有数据的行号,避免复制空行 Dim lastRow As Long lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row ' 复制A2:C列的数值到input_4的A2位置 .Range("A2:C" & lastRow).Copy wbMe.Sheets("input_4").Range("A2").PasteSpecial Paste:=xlPasteValues ' 复制H2:H列的数值到input_4的D2位置 .Range("H2:H" & lastRow).Copy wbMe.Sheets("input_4").Range("D2").PasteSpecial Paste:=xlPasteValues End With ' 可选:清空剪贴板避免残留复制提示 Application.CutCopyMode = False
高效优化方案(无需走剪贴板,大数据量下速度提升明显)
Dim lastRow As Long With wb.Sheets("vintage_agr") lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row ' 直接赋值A:C列数据,跳过剪贴板操作 wbMe.Sheets("input_4").Range("A2:C" & lastRow).Value = .Range("A2:C" & lastRow).Value ' 直接赋值H列数据到D列对应位置 wbMe.Sheets("input_4").Range("D2:D" & lastRow).Value = .Range("H2:H" & lastRow).Value End With
修改说明
- 清空范围从整列
A:D调整为A2:D起始的区域,保留input_4第1行原有表头,不会影响已配置的数据透视表规则 - 复制范围从整列调整为从第2行开始的有效数据区域,仅复制表头下方的数值,不会覆盖目标表表头
- 自动判断源数据的最后一行,不会复制多余空行,减少目标表的冗余数据
内容的提问来源于stack exchange,提问作者Przemek Dabek
相关产品推荐
相关产品推荐

