You need to enable JavaScript to run this app. Excel VBA使用数组复制列时如何将数据从Sheet6的A2、B2行开始粘贴
优惠活动
大模型
产品
解决方案
定价
更多

Excel VBA使用数组复制列时如何将数据从Sheet6的A2、B2行开始粘贴

问题原因

你当前代码默认从Sheet6第1行写入的核心原因是:VBA中将工作表Range赋值给变体数组时,数组默认是1下标开头的,你循环时直接把数组下标i作为行号使用,i=1时自然就写到了第1行。

修改方案

方案1:最小改动适配原有代码

仅需要把写入Sheet6的行号参数加1即可,同时可以删掉冗余的ReDim语句(Range赋值给数组时会自动重定义数组维度,提前ReDim反而可能引发边界错误):

Dim ColumnAarray() As Variant
Dim my_Arange As Range
LastRow = Sheet1.Cells(Sheet1.Rows.Count, "A").End(xlUp).Row
Set my_Arange = Sheet1.Range("A2:B" & LastRow)
ColumnAarray = my_Arange
For i = LBound(ColumnAarray) To UBound(ColumnAarray)
    Sheet6.Range("A" & i + 1) = ColumnAarray(i, 1)
    Sheet6.Range("B" & i + 1) = ColumnAarray(i, 2)
Next i

方案2:更高效的无循环写法

不需要逐行遍历赋值,VBA支持等尺寸范围直接批量赋值,运行效率更高:

Dim LastRow As Long
' 读取Sheet1A列最后有数据的行号
LastRow = Sheet1.Cells(Sheet1.Rows.Count, "A").End(xlUp).Row
' 源范围和目标范围尺寸完全一致,直接批量赋值
Sheet6.Range("A2:B" & LastRow) = Sheet1.Range("A2:B" & LastRow).Value

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 23:54:03