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