使用While循环获取特定列中的行的句柄

时间:2019-05-14 10:57:37

标签: excel vba while-loop

我还在学习VBA。我有一个要求,我需要处理在特定列中不为空的行。我尝试了For循环。但是考虑到Excel中的1万个条目,存在性能问题。您能建议一个while循环,该循环仅跳到有值的行,而不跳到所有行吗?

基本上,我需要所有不为空的行的句柄。

1 个答案:

答案 0 :(得分:3)

SpecialCells是您的朋友在这里。

如果要从A列中获取所有具有常量值的单元格,则可以使用Columns(1).SpecialCells(xlCellTypeConstants)

如果您希望A列中所有包含公式的单元格,则可以使用Columns(1).SpecialCells(xlCellTypeFormulas)

如果您希望列A中的所有单元格都为空白,则可以使用Columns(1).SpecialCells(xlCellTypeBlanks)

这3个字段在一起将为您提供该列中的所有所有单元格。这意味着“非空白”将xlCellTypeConstantsxlCellTypeFormulas组合在一起。 “组合”的另一个名称是Union,它使我们可以将Range粘在一起

Dim rngNonBlank AS Range
Set rngNonBlank = Union(Columns(1).SpecialCells(xlCellTypeConstants), _
    Columns(1).SpecialCells(xlCellTypeFormulas))
Dim rngLoopThrough AS Range
For Each rngLoopThrough In rngNonBlank
    'You can use rngLoopThrough.EntireRow to get the entire Row
Next rngLoopThrough