我希望让VBA从excel中的连续数据集中选择一个范围,该范围涵盖固定的列数但不同的行数,只捕获包含匹配时间戳的行(在这种特定情况下,尽管匹配任何条件的能力显然更加动态)。我想把这个范围输入到我拥有的另一个宏中。在我的宏在捕获的范围上运行它的过程后,我希望它使用行中下一个捕获的范围再次循环整个过程。
A B C D E F
1 x x 12:10 x x x
2 x x 12:10 x x x
3 x x 12:10 x x x
4 x x 12:40 x x x
5 x x 12:40 x x x
6 x x 12:40 x x x
7 x x 12:40 x x x
8 x x 1:05 x x x
9 x x 1:05 x x x
10 x x 1:05 x x x例如,
我想捕获A-F列,1-3行作为一个范围,运行我的宏,然后...
我想要捕获列A-F,行4-7作为另一个范围,运行我的宏,然后...
我想要捕获列A-F,行8-10作为另一个范围,运行我的宏,等等。直到在这下面没有更多的范围要捕获。
如您所见,本例中的行是通过它们的时间戳来区分的。
我只有几天的时间来掌握VBA,我对什么是什么有一个基本的理解,只是没有从我找到的其他例子中拼凑出这个例子的经验。
谢谢你的帮助。
发布于 2012-01-08 08:40:01
可能最简单的方法是:
调用宏
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 Subhttps://stackoverflow.com/questions/8774312
复制相似问题