首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在连续的数据列中使用特定条件选择范围

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

Stack Overflow用户
提问于 2012-01-08 08:19:08
回答 1查看 2.6K关注 0票数 2

我希望让VBA从excel中的连续数据集中选择一个范围,该范围涵盖固定的列数但不同的行数,只捕获包含匹配时间戳的行(在这种特定情况下,尽管匹配任何条件的能力显然更加动态)。我想把这个范围输入到我拥有的另一个宏中。在我的宏在捕获的范围上运行它的过程后,我希望它使用行中下一个捕获的范围再次循环整个过程。

代码语言:javascript
复制
      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,我对什么是什么有一个基本的理解,只是没有从我找到的其他例子中拼凑出这个例子的经验。

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-08 08:40:01

可能最简单的方法是:

  1. 将数据复制到数组
  2. 检查数组以查找连续范围(循环此数组比循环单元格快得多)
  3. 使用标识的范围

调用宏

代码语言:javascript
复制
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
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8774312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档