首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excel VBA --如何使用单个命令从3D矩阵复制2D矩阵内容?

Excel VBA --如何使用单个命令从3D矩阵复制2D矩阵内容?
EN

Stack Overflow用户
提问于 2017-03-08 10:31:00
回答 1查看 242关注 0票数 3

我有一个3D矩阵,其中包含了我想使用命令在一系列单元格中写入的内容:

代码语言:javascript
复制
Worksheet.Range(Worksheet.Cells(RowStart, ColumnStart), Worksheet.Cells(RowEnd, ColumnEnd)).Value = MyData

问题是,MyData的数据实际上是用三维矩阵的第一维的索引=2来描述的。

由于我在这里看不到使用Application.WorksheetFunction.Index的可能性,所以我想在2D矩阵中复制3D矩阵的整个特定索引的内容。

这是否可能不需要诉诸于For循环(或者编写一个子程序来实现)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-08 10:37:44

不久前,我做了这个定制的Sub来显示3D数组的一部分:

代码语言:javascript
复制
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

所以,你必须像这样使用它:

代码语言:javascript
复制
Call Print2D_of_3D_Array(MyArray, 1, 2, WorksheetVariable, False)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42668846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档