【问题标题】:2 Dimensional array from range [closed]范围内的2维数组[关闭]
【发布时间】:2013-08-31 03:19:51
【问题描述】:

我在 Excel 工作表中的单元格 B6:H14 中有文本数据。

有些行有 2 个包含内容的单元格,而另一些有 4 个单元格,有些则有 7 个单元格。如何将这些单元格复制到二维数组?我已经知道尺寸,所以我可以接受不声明动态代码的尺寸。

我是否需要使用循环(我目前计划使用)?

或者有没有更简单/更优雅的方法?

【问题讨论】:

  • 我对此投了反对票,因为您在请求帮助之前似乎没有尝试过任何事情。有许多现有的答案,例如stackoverflow.com/q/13663370,它们会有所帮助。
  • @brettdj 实际上,您链接到的确切问题是关于将二维数组输出到一个范围内 - 这个问题是关于反向执行的。
  • @RichardLeMesurier 该问题显示了如何将一个范围放入一个数组中,对其进行操作,然后将其转储回一个范围 - 即它既可以从范围到数组(这个问题要求),也可以从数组到范围。这是相同的方法 Mehow/VBA4All/回答它是一种乐趣
  • @brettdj 很公平 - 我只是觉得没有您或我的 VBA 知识的人可能很难意识到这一点。他们都是很好的答案。
  • @RichardLeMesurier 是的 - 你确实给出了一个很好的观点。

标签: excel vba


【解决方案1】:

假设您的电子表格看起来像这样

有一种非常简单的方法可以将其粘贴到二维数组中

Dim arr as Variant
arr = Range("B6:H14").Value

将此数组打印回电子表格的最简单方法

Sub PrintVariantArr()

    Dim arr As Variant
    arr = Range("B6:H14")

    Range("B16").Resize(UBound(arr, 1), UBound(arr, 2)) = arr

End Sub

或者你可以迭代/循环数组

Sub RangeToArray()

    Dim arr As Variant
    arr = Range("B6:H14").Value
    Dim r As Long, c As Long

    r = 16
    c = 2

    Dim i, j
    For i = LBound(arr, 1) To UBound(arr, 1)
        For j = LBound(arr, 2) To UBound(arr, 2)
            Cells(r, c) = arr(i, j)
            c = c + 1
        Next j
        c = 2
        r = r + 1
    Next i

End Sub

您的数组打印回电子表格

【讨论】:

    猜你喜欢
    • 2013-09-23
    • 2020-08-27
    • 2021-07-05
    • 2021-10-28
    • 1970-01-01
    • 2014-07-26
    • 2020-07-16
    • 2011-03-27
    • 1970-01-01
    相关资源
    最近更新 更多