Excel 动态且有条件地将数据集划分为多个数组,或存储有关拆分位置的信息

Excel 动态且有条件地将数据集划分为多个数组,或存储有关拆分位置的信息,excel,vba,Excel,Vba,我有一组数据,按“年”列排序。我从一个小集合开始构建代码,所以只有大约500行。“Year”列中大约有15个不同的值,我想分别为每个列绘制一个图表。要做到这一点,我需要知道一年从哪一行开始,在哪一行结束。因此,我需要每年将大量数据划分为单独的数组,或者每年需要一个包含开始行和结束行的数组,以便在生成图形的代码中引用它们 我正在考虑编写一个循环,检查列“Year”中的行的值是否与上面的值不同,使用如下内容: For row = 3 to TotalRows IfNot Cells(row,

我有一组数据,按“年”列排序。我从一个小集合开始构建代码,所以只有大约500行。“Year”列中大约有15个不同的值,我想分别为每个列绘制一个图表。要做到这一点,我需要知道一年从哪一行开始,在哪一行结束。因此,我需要每年将大量数据划分为单独的数组,或者每年需要一个包含开始行和结束行的数组,以便在生成图形的代码中引用它们

我正在考虑编写一个循环,检查列“Year”中的行的值是否与上面的值不同,使用如下内容:

For row = 3 to TotalRows
    IfNot Cells(row,1).Value = Cells(row-1,1).Value Then
        'Row = startrow current year
        'Cells(row,1).Value = current year
        'Row -1 = endrow previous year
        'Cells(row-1,1).Value = previous year
    End If
Next row

存储这些值的最佳方式是什么,以便我以后可以引用它们?

我刚刚通过获得风滚草徽章回到这个问题上来。然而,我最近一直在努力解决这个问题,所以我想我最好与任何可能遇到这个问题的人分享我的答案:

Public MyRange As Range
Public Years() As Variant
Global TotalRows As String

Sub DevideData()

Dim i As Integer

Set MyRange = Range("AL35:AN35") 'output data from Years here for manual control.

ReDim Years(1, 2)

Years(0, 0) = Cells(2, 1).Value
Years(0, 1) = 2

i = 1
ThisWorkbook.Worksheets("Simple Boundary").Activate
TotalRows = ThisWorkbook.Worksheets("Simple Boundary").Range("A100000").End(xlUp).row

For row = 3 To TotalRows 'my data starts in row 2, as row 1 is a header
    Years = ReDimPreserve(Years, i, 2) 'as data starts in row 2 this is the first entry

    If Not Cells(row, 1).Value = Cells(row - 1, 1).Value Then 
'check if cell value differs from row above if so fill a line in the array
        Years(i - 1, 2) = row - 1
        Years(i, 0) = Cells(row, 1).Value
        Years(i, 1) = row
        i = i + 1 'increase the row of the array
    End If
Next row

Years(i - 1, 2) = TotalRows
MyRange.Resize(i, 3) = Years

End Sub
在我的另一个问题中也可以找到更优雅的答案