gpt4 book ai didi

vba - 使用连续数据列中的特定条件选择范围

转载 作者:行者123 更新时间:2023-12-03 03:01:41 25 4
gpt4 key购买 nike

我想让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 几天,我对 VBA 的作用有了基本的了解,只是没有从我发现的其他示例中将其拼凑在一起的经验。

感谢您的帮助。

最佳答案

可能最简单的方法是:

  1. 将数据复制到数组
  2. 检查数组以查找连续范围(循环该数组比循环单元格快得多)
  3. 使用确定的范围调用宏
<小时/>
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

关于vba - 使用连续数据列中的特定条件选择范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8774312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com