我有一列要过滤值:

现在我只想在过滤过的细胞上循环。
这就是我所做的:
For lin = 2 to lastLine
If Not Plan11.Cells(lin, 1).Hidden Then
//do something
End If
Next但我有50000多个细胞.有更快的方法吗?
发布于 2016-03-07 18:29:08
使用SpecialCells对象的range方法
with ws.Columns(1).SpecialCells(xlCellTypeVisible)
'... do something.
' for instance: .Font.Bold = True
end with其中ws是要使用其列"A“的工作表对象
发布于 2016-03-07 18:01:43
您可以使用以下方法找到筛选过的单元格:
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 rCellhttps://stackoverflow.com/questions/35850151
复制相似问题