首页 > 解决方案 > 如何向数组添加不同的范围?

问题描述

我有一个数据集,其中包含源文件中不同范围的数据,我想将其组合成一个范围并复制/粘贴到目标文件中。虽然联合工作,但我需要在一百个工作表上运行它,而且联合/复制/粘贴花费的时间太长。我想看看我是否会通过转换为数组来提高性能。

我已经尝试通过使用联合来组合范围来这样做,但是我无法让数组在这样做时初始化为多于一列。不知道我做错了什么?

这是一个例子。

sub CopyData()
dim LastR as long
dim dataArr as variant

with SourceWS
    LastR = .cells(.rows.count,1).end(xlup).row

    dataArr = .union(.range("A8:A" & LastR), _
                     .range("C8:C" & LastR), _
                     .range("H8:H" & LastR))

end with

DestWS.range("A1").resize(ubound(dataArr,1), ubound(dataArr,2)) = dataArr

end sub

标签: excelvba

解决方案


我在另一个论坛上收到了一些帮助。以下完成了我正在尝试做的事情:

Sub CombineRanges()

    Dim MyArr() As Variant
    Dim MyRows as Variant

    MyRows = Evaluate("ROW(1:20)")
    MyArr = Application.Index(Columns("A:H"), MyRows, Array(1, 3, 8))
    Range("Z1").Resize(UBound(MyArr, 1), UBound(MyArr, 2)).Value2 = MyArr

End Sub

推荐阅读