【问题标题】:How to iterate through only Rows in the AutoFiltered Worksheet in Excel VBA?如何仅遍历 Excel VBA 中自动筛选工作表中的行?
【发布时间】:2017-07-27 16:14:24
【问题描述】:

只需要遍历自动过滤范围内的行(目的是获取行索引)吗?

我试过这个:

For Each ele In rng 
    RowInd = ele.Rows.Address
    RowNum = Split(RowInd, "$")(2)
Next ele

这会在 rng 中的所有单元格中进行迭代。但我不需要这个。我需要遍历该范围内每一行中的任何一个单元格(比如第 2 列或第 1 列中的任何单元格)。

【问题讨论】:

  • 你想循环过滤范围吗?

标签: vba excel


【解决方案1】:

我会用 tempRng 来做这个。

首先,您必须像 mirg 所说的那样执行此操作,并将 tempRng 指定为您要循环的列。

你应该这样做的循环。

For Each ele In tempRng.SpecialCells(xlCellTypeVisible)

所以你只会循环过滤范围。

Dim Rng As Range
Dim tempRng As Range

Set Rng = ActiveSheet.Range("A2:D11")
Set tempRng = Rng.Columns(1)

    For Each ele In tempRng.SpecialCells(xlCellTypeVisible)
        RowInd = ele.Rows.Address
        RowNum = Split(RowInd, "$")(2)
    Next ele

【讨论】:

  • 这就像一个魅力!感谢 Moosil 和 Mrig! \m/
【解决方案2】:

代替

For Each ele In rng

使用

For Each ele In rng.Columns(1).Cells

这将遍历范围的第 1 列(第一列)。如果您的范围是"C1:G10",那么rng.Columns(1).Cells 将循环通过Column Crng.Columns(2).Cells 将循环通过Column D,依此类推。

1 更改为所需的列号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-21
    相关资源
    最近更新 更多