根据列中的条件创build多个范围

新的VBA,我试图根据列中的条件创build多个范围或数组,然后将它们放在一个单独的工作表中。 问题是这个代码必须适用于几个不同的数据集。 所以一个数据就会看起来像这样 ,但有更多的数据点(每个数据集大约有10,000个)。

所以我想要做的是,对于状态列中的每个1组,创build一个范围/数组,然后将相应的时间和数据移动到一个新的工作表中。 所以对于我的例子,会有3个新的工作表,第一个新的工作表包含范围(“A2:B5”),第二个包含范围(“A10:B12”)。 对于每个数据集,状态列都会更改,新工作表的数量也会有所不同。

我已经查看了这个网站,最接近我发现我的需求是创build基于单元格的dynamic范围值 ,但它有一个已知数量的范围。 我真的不知道如何完成我所需要的。 我一直试图做一个while循环里面的每个循环内的if then循环,但不能使其工作。

任何帮助将不胜感激! 现在已经打了我几个小时的头。

这应该可以帮助你:

 Option Explicit Sub main() Dim area As Range With Sheets("myDataSheet") '<--| reference your sheet (change "myDataSheet") to your actual sheet name With .Range("C1", .Cells(.Rows.Count, "A").End(xlUp)) '<--| reference its columns A:C range form row 1 down to last column A not empty row .AutoFilter Field:=3, Criteria1:="1" '<--| filter referenced range on its 3rd column (ie "State") with 1 If Application.WorksheetFunction.Subtotal(103, .Resize(, 1)) > 1 Then '<--| if any filterd cells other than header For Each area In .Resize(.Rows.Count - 1, 2).Offset(1).SpecialCells(xlCellTypeVisible).Areas '<--| loop through filtered range (skipping header) 'Areas' area.Copy Sheets.Add(Sheets(Sheets.Count)).Range("A1") '<--| copy current 'Area' into new sheet Next area End If End With .AutoFilterMode = False End With End Sub