Arrays 如何引用一个数组并在每次迭代中写入多个列的另一个数组

Arrays 如何引用一个数组并在每次迭代中写入多个列的另一个数组,arrays,excel,vba,multidimensional-array,Arrays,Excel,Vba,Multidimensional Array,我很好奇是否可以在循环的一次迭代中将多个列从现有数组复制到一个新数组。假设我们有以下一般示例: Array1在第1列中包含10000个元素,在第2列中包含10000个元素,在第3列中包含10000个元素,以此类推 假设我希望根据该信息生成一个新数组,只希望填充第1列和第2列。我可以通过使用正确尺寸的目标数组只循环一次来实现这一点吗?例如: 'Assume TargetArray has already been ReDimmed to the size of Array1 in the code

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

Array1在第1列中包含10000个元素,在第2列中包含10000个元素,在第3列中包含10000个元素,以此类推

假设我希望根据该信息生成一个新数组,只希望填充第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
那么这可以一步完成吗,或者我必须为我要添加到数组中的每个维度创建一个循环。如上所述,每个循环进行两次操作是否可以节省速度(假设它可以工作)


谢谢你的帮助

您是否尝试过仅使用范围对象?我刚刚在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

你的例子应该和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

这和你的差不多吗?如果是这样的话,那就行了。

你试过你在这里发布的代码了吗?在我看来,它会起作用(或几乎会起作用)。回答你的第二个问题,是的。当然,一次循环10000个项目要比两到三次循环10000个项目快。我已经试过了。这个例子会起作用,但我注意到在一些维度中有一些空白值,这会导致奇怪的结果。我只是假设,如果我强制它达到已知完整列的大小,那么数据就会随之出现。我担心的是我的逻辑错了,而不是数据错了。:)我想可能是你的数据。您能定义“奇怪的结果”吗?目标数组中缺少预期的数据行。我现在没有代码,因为这是一个个人项目(我正在工作),但它让我几次尝试都很沮丧。我试着将它们声明为变量和双变量,但都没有用。这不是数组,而是范围对象,处理方式不同。OP询问如何将二维数组的特定部分转换为另一个二维数组,这不是您的答案所要解决的问题。