arrays - VBA从数组中定义一个范围

标签 arrays vba excel range

所以我有一个 1000 行和 10 列的二维数组。我想为 10 列中的每一列创建 10 个范围,然后将它们用作系列来制作图表。我的问题是,如何从数组中定义一个范围,而不使用整个数组,只使用其中的一列?

Sub ChartLord()

    Dim rows As Long
    Dim columns As Integer
    Dim mychart As Chart
    Dim data As Range
    Dim dataset() As Double

    rows = ShData.Cells(ShData.rows.Count, 1).End(xlUp).Row
    columns = ShData.Cells(1, ShData.columns.Count).End(xlToLeft).Column

    'set array range (includes column titles and xAxix column)
    dataset = ShData.Range(ShData.Cells(1, 1), ShData.Cells(rows, columns))



    For Z = 0 To 10

        Set data = ?
        Set mychart = shtCharts.Shapes.AddChart2(200, xlColumnClustered, 50 + 300 * Z, 50, 300, 200, 5).Chart


    Next Z



End Sub

最佳答案

以下会将您的范围值收集到 2D 范围中,然后将第二列切成新的 2D 数组。后者只是 1 比 1 的“列”宽。

Dim rws As Long, cols As Long, d As Long
Dim dataset() As Variant, subdataset() As Variant
Dim ShData As Worksheet

Set ShData = Worksheets("Sheet4")

rws = ShData.Cells(ShData.rows.Count, 1).End(xlUp).Row
cols = ShData.Cells(1, ShData.columns.Count).End(xlToLeft).Column

'set array range (includes column titles and xAxix column)
dataset = ShData.Range(ShData.Cells(1, 1), ShData.Cells(rws, cols))

subdataset = Application.Index(dataset, 0, 2) '<~~second column
For d = LBound(subdataset, 1) To UBound(subdataset, 1)
    Debug.Print subdataset(d, 1)
Next d

ShData.Cells(1, "Z").Resize(UBound(subdataset, 1), UBound(subdataset, 2)) = subdataset

最后一个操作将剥离列的值放回工作表中,从 Z1 开始。

关于arrays - VBA从数组中定义一个范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36434104/

相关文章:

excel - VBA 将数据从项目复制粘贴到 Excel 中

python - 通过url从python访问json元素

c++ - 字符四 [4] = "four";该语句的正确语义是什么?

Java 逐元素求和 2 个数组

vba - 如何在运行时动态创建控件

vba - 使用 ms word VBA 宏合并表格中的单元格

java - 取一部分char数组并将其放入字符串中

excel - 如何自动过滤具有来自特定范围的值的列

vba - 将 Range 属性存储为对象?

excel - vba替换嵌套if语句