如何引用数组并写入每次迭代具有多个列的另一个数组

时间:2015-04-13 20:01:24

标签: arrays excel vba multidimensional-array

我很好奇我是否可以在循环的一次迭代中将多个列从现有数组复制到新数组。假设我们有以下一般示例:

Array1在column1中包含10,000个元素,在column2中包含10,000个元素,在第3列中包含10,000个元素,等等。

让我们说我希望从该信息生成一个新阵列,只有我想要只填充第1列和第2列。我可以通过使用正确尺寸的目标数组循环一次来完成此操作吗?例如:

'Assume TargetArray has already been ReDimmed to the size of Array1 in the code prior
For i=0 to UBound(Array1)
TargetArray(x,1)= Array1(x,1)
TargetArray(x,2)=Array1(x,2)
Next

所以可以一步完成,或者我必须为我想要添加到数组的每个维做一个循环。如上所述,通过每个循环执行两次操作是否可以节省速度(假设它有效)。

感谢您的所有帮助!

2 个答案:

答案 0 :(得分:0)

您是否尝试过使用Range对象?我只是在A列和B列中创建了100个值,并将它们复制到F和G.或者您是否尝试将前三列中的值插入到等式中,以便为新的两列提供值?

Sub CopyRange()

Dim Array1 As Range
Dim Array2 As Range


Set Array1 = Range("A1:B100")
Set Array2 = Range("F1:G100")

Array2.Value = Array1.Value


End Sub

答案 1 :(得分:0)

你的例子应该像RubberDuck评论的那样有用 它类似于下面的例子,它在我的最后工作 我无法将其用于评论,因此我无法将其作为答案发布。

Dim TargetArray ' declared as Variant type, not array of variants

ReDim TargetArray(0 To Ubound(Array1, 0), 0 To 1) ' for 2 columns
For i = 0 To Ubound(Array1, 1)
    TargetArray(i, 0) = Array1(i, 0)
    TargetArray(i, 1) = Array1(i, 1)
Next

这接近你所拥有的吗?如果是这样,那应该有效。