如何循环Excel单元格filter

我有一个我想过滤值的列​​:

在这里输入图像说明

现在我只想循环过滤单元格
这就是我所做的:

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

但是我有超过50000个细胞……有没有更快的方法来做到这一点?

使用range对象的SpecialCells方法

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

其中ws是要使用的列“A”的工作表对象

您可以使用以下方法find过滤的单元

 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