我有一个3D矩阵,其中包含了我想使用命令在一系列单元格中写入的内容:
Worksheet.Range(Worksheet.Cells(RowStart, ColumnStart), Worksheet.Cells(RowEnd, ColumnEnd)).Value = MyData问题是,MyData的数据实际上是用三维矩阵的第一维的索引=2来描述的。
由于我在这里看不到使用Application.WorksheetFunction.Index的可能性,所以我想在2D矩阵中复制3D矩阵的整个特定索引的内容。
这是否可能不需要诉诸于For循环(或者编写一个子程序来实现)?
发布于 2017-03-08 10:37:44
不久前,我做了这个定制的Sub来显示3D数组的一部分:
Public Sub Print2D_of_3D_Array(ByVal ArrayT As Variant, _
ByVal FixedDim As Integer, _
ByVal FixedDimValue As Double, _
ByRef Sheet_to_PrintOn As Worksheet, _
Optional ByVal DeleteSheet As Boolean = False)
If DeleteSheet Then Set Sheet_to_PrintOn = DeleteAndAddSheet(Sheet_to_PrintOn)
Select Case FixedDim
Case Is = 1
For i = LBound(ArrayT, 2) To UBound(ArrayT, 2)
For j = LBound(ArrayT, 3) To UBound(ArrayT, 3)
Sheet_to_PrintOn.Cells(i + 1, j + 1) = ArrayT(FixedDimValue, i, j)
Next j
Next i
Case Is = 2
For i = LBound(ArrayT, 1) To UBound(ArrayT, 1)
For j = LBound(ArrayT, 3) To UBound(ArrayT, 3)
Sheet_to_PrintOn.Cells(i + 1, j + 1) = ArrayT(i, FixedDimValue, j)
Next j
Next i
Case Is = 3
For i = LBound(ArrayT, 1) To UBound(ArrayT, 1)
For j = LBound(ArrayT, 2) To UBound(ArrayT, 2)
Sheet_to_PrintOn.Cells(i + 1, j + 1) = ArrayT(i, j, FixedDimValue)
Next j
Next i
Case Else
MsgBox "error"
End Select
End Sub所以,你必须像这样使用它:
Call Print2D_of_3D_Array(MyArray, 1, 2, WorksheetVariable, False)https://stackoverflow.com/questions/42668846
复制相似问题