提问人:Saugata 提问时间:9/28/2022 最后编辑:braXSaugata 更新时间:9/29/2022 访问量:59
VBA - 将某些行(一列)从二维数组复制到另一个数组的特定列
VBA - Copying Some rows (of one column) from a 2-D array to a particular column of another array
问:
我被困住了。我正在尝试将一些选定的行从二维数组的一列复制到另一个二维数组的特定列。我已经尝试了我所有的知识,但无济于事。
Sub TestIndxPst()
Dim varArray As Variant
ReDim varArray(1 To 4, 1 To 3)
Dim vaOut As Variant
ReDim vaOut(1 To 4, 1 To 3)
RowNumArray = Evaluate("transpose(Row(1" & ":" & 5 & "))")
varArray = ThisWorkbook.Worksheets("Sheet1").Range("G2:I7")
Application.Index([G9:I12], , 2) = Application.Transpose(Application.Index(varArray, Array(2, 3, 5, 6), 2))
vaOut = Application.Transpose(Application.Index(varArray, Array(2, 3, 5, 6), 2))
Application.Index(vaOut, , 2) = Application.Transpose(Application.Index(varArray, Array(2, 3, 5, 6), 2))
For i = LBound(vaOut) To UBound(vaOut)
Debug.Print vaOut(i, 1)
Next i
End Sub
您可以看到,我可以在使用Application.Index([G9:I12], , 2) = Application.Transpose(Application.Index(varArray, Array(2, 3, 5, 6), 2))
当我使用vaOut = Application.Transpose(Application.Index(varArray, Array(2, 3, 5, 6), 2))
但是,一旦我尝试将结果放在 out 数组的第 2 列中,.我收到应用程序定义或对象定义错误Application.Index(vaOut, , 2) = Application.Transpose(Application.Index(varArray, Array(2, 3, 5, 6), 2))
非常感谢任何帮助。
答:
Application.Index(vaOut, , 2) = ..
- 非常感谢任何帮助
-
ReDim varOut
&ReDim vaOut
被任何最终的 DataField 分配否决。
-
- 如果您想通过将重新排列的值写入目标范围来坚持该函数,我更喜欢中间赋值
类似的东西
Index
- 如果您想通过将重新排列的值写入目标范围来坚持该函数,我更喜欢中间赋值
类似的东西
Dim newArr
newArr = Application.Transpose(Application.Index(varArray, Array(2, 3, 5, 6), 2))
其次
Sheet1.Range("H9").Resize(Ubound(newArr),ubound(newArr,2)) = newArr
-
Application.Index([G9:I12], , 2) = ..
不构建虚拟阵列, 它只描述了接收目标范围,当时只是 H9:H12。
主要问题
但是,如果要将 newArr 值输入到相同或另一个数组列中,
这根本不可能一蹴而就
结构类似于(尽管类似于
您之前的目标范围代码) - 您必须按照@TimWilliams建议循环(例如通过 newArr 并将值输入到另一个预定义的数组)。Application.Index(vaOut, , 2) = ..
评论
Application.Transpose
WorksheetFunction.Transpose
上一个:嵌套循环值 i 和 j Kotlin 的 Slice()
下一个:切片多维数组
评论