【问题标题】:Excel VBA loop through visible filtered rowsExcel VBA 循环遍历可见的过滤行
【发布时间】:2015-10-21 01:37:04
【问题描述】:

我有一个带有自动过滤器的 Excel 表格。

在过滤后的表中,我只过滤了几行。

我的目标是遍历所有可见行以收集数据以复制到另一张工作表。

我想要一种方法来收集具有第一个可见行号的变量。

我的草稿代码是:

Dim cnp As String
Dim nome As String
Dim filter_rng As Range
Dim rw As Range
Dim last_row As Long 'last visible data row
Dim dest_row As Long 'row to paste the colected data

Set filter_rng = Range("A5:Y" & last_row).Rows.SpecialCells(xlCellTypeVisible)
'collect data
For Each rw In filter_rng.SpecialCells(xlCellTypeVisible)
    workshett(1).Activate
    cnp = Range("a" & rw).Value
    nome = Range("b" & rw).Value

'copy data to another worksheet first data line is cell A2
    Worksheet(2).Activate
    Range("A" & dest_row + 1).Value = cnp
    Range("b" & dest_row + 1).Value = nome

Next rw

【问题讨论】:

    标签: vba loops rows visible


    【解决方案1】:

    您的代码包含多个错误,并且您提供的额外信息很少,以便我们帮助您,但请尝试一下。

    请查看下面的代码并与您的代码进行比较,下面的代码最接近您正在尝试做的事情,并且已经过测试和工作。

    Dim cnp As String
    Dim nome As String
    Dim filter_rng As Range
    Dim rw As Range
    Dim last_row As Long 'last visible data row
    Dim dest_row As Long 'row to paste the colected data
    
    last_row = 200
    dest_row = 1
    
    Set filter_rng = Sheets(1).Range("A5:Y" & last_row)
    
    'collect data
    For Each rw In filter_rng.SpecialCells(xlCellTypeVisible)
        'Worksheets(1).Activate
        cnp = Sheets(1).Range("A" & rw.Row).Value
        nome = Sheets(1).Range("B" & rw.Row).Value
    
    'copy data to another worksheet first data line is cell A2
        'Worksheets(2).Activate
        Sheets(2).Range("A" & dest_row + 1).Value = cnp
        Sheets(2).Range("B" & dest_row + 1).Value = nome
    
    Next rw
    

    【讨论】:

    • GD Joao,如果我的回答解决了你的问题,那么请接受它作为正确答案吗?您可以通过单击我的答案顶部的大“V”勾号来完成。
    • SpecialCells 仅在过滤器连续的情况下才有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-14
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多