在连续的数据列中使用特定条件select范围

我想让VBAselect一个范围,覆盖恒定数量的列,但与Excel中连续数据集的行数不同,只捕获包含匹配时间戳的行(在此特定情况下,尽pipe匹配任何条件的能力是更明显)。 我想喂这个范围到另一个macros,我有。 在我的macros在捕获的范围上运行它的过程之后,我想让它遍历整个过程再次使用下一个捕获的范围。

ABCDEF 1 xx 12:10 xxx 2 xx 12:10 xxx 3 xx 12:10 xxx 4 xx 12:40 xxx 5 xx 12:40 xxx 6 xx 12:40 xxx 7 xx 12:40 xxx 8 xx 1:05 xxx 9 xx 1:05 xxx 10 xx 1:05 xxx 

例如,

我想捕捉列AF,行1-3作为一个范围,运行我的macros,然后…

我想捕捉列AF,第4-7行作为另一个范围,运行我的macros,然后…

我想捕捉列AF,行8-10作为另一个范围,运行我的macros,等等,直到没有更多的范围下面这个捕获。

正如你所看到的,这种情况下的行由它们的时间戳来区分。

对于VBA来说,我只有一两天的时间,我对于什么是一个基本的低估,而不是从我发现的其他例子中把这个结合在一起的经验。

谢谢你的帮助。

可能最简单的方法是:

  1. 将您的数据复制到一个数组
  2. 检查数组以查找连续范围(循环此数组比循环单元格快得多)
  3. 用确定的范围调用你的macros

 Option Explicit Sub Demo() Dim v As Variant Dim i As Long, j As Long Dim sh As Worksheet Set sh = ActiveSheet v = sh.[A1].CurrentRegion ' Assumes data range starts at cell A1 ' Alternative method to get data block starting at A3 ' Extend to a specified column number (NumberOfColumnsYouWant) ' Assumes all rows in your data block in columns A have data v = sh.Range([A3], [A3].End(xlDown)).Resize(, NumberOfColumnsYouWant) i = 1 j = 1 Do While i <= UBound(v, 1) Do While j < UBound(v, 1) If v(i, 3) = v(j + 1, 3) Then j = j + 1 Else Exit Do End If Loop YourMacro Range(sh.Cells(i, 1), sh.Cells(j, UBound(v, 2))) i = j + 1 j = i Loop End Sub Sub YourMacro(rng As Range) MsgBox rng.Address End Sub