2016-03-07 51 views
1

我有我要篩選值的列:Excel單元格如何環路濾波器

enter image description here

現在我想僅環上的過濾單元
這是我做了什麼:

For lin = 2 to lastLine  
    If Not Plan11.Cells(lin, 1).Hidden Then 
      //do something 
    End If 
Next 

但是我有超過50000個細胞......有沒有更快的方法來做到這一點?使用

+0

有一個類似的問題在這裏:http://stackoverflow.com/questions/10849177/easiest-way-to-loop-through-a-filtered-list-with -vba – ayhan

回答

1

使用range對象

with ws.Columns(1).SpecialCells(xlCellTypeVisible) 
'... do something. 
' for instance: .Font.Bold = True 
end with 

SpecialCells方法,其中ws是工作表對象,其列「A 「你想與

1

您可以找到過濾單元:

ActiveSheet.range("valid range for column").Rows.SpecialCells(xlCellTypeVisible) 

然後你可以反覆結果和做的東西。

例如,當我有一個表,我可以這樣來做:

Dim lastRow 
lastRow = ActiveSheet.ListObjects("Table1").range.Rows.Count 
Dim range 
Set range = ActiveSheet.range("A2:A" & lastRow).Rows.SpecialCells(xlCellTypeVisible) 
For Each rCell In range.Cells 
    MsgBox rCell.Value 
Next rCell