【发布时间】:2021-08-19 03:27:07
【问题描述】:
以下代码用于循环遍历范围内的所有行并根据该单元格中的单元格值隐藏它们,以及下面的一个。如果两个单元格值 = "" 则意图是隐藏整行。一切正常,但速度非常慢。任何关于更快的建议将不胜感激。
Sheets("Morning Report Export Sheet").Activate
For x = 10 To 108
If Cells(x, 9).Value = "" Then
If Cells(x + 1, 9).Value = "" Then
Cells(x, 9).EntireRow.Hidden = True
End If
End If
Next
...也尝试了以下方法,但同样慢...
If Cells(x, 9).Value = "" And Cells(x + 1, 9).Value = "" Then
【问题讨论】:
-
将第 9 列的范围拉入变量数组(您必须将其转置为一维数组),然后迭代该数组的值,以及当条件遇到你
Union对应的Range到内存中的单元格范围(注意:循环除了用所有相关单元格构建一个联合范围对象之外什么都不做);在循环之后,您然后转到theUnionRange.EntireRow.Hidden = True并且噗,您刚刚隐藏了所有需要在单个操作中隐藏的行,从工作表 once 读取,并写入工作表 once . -
或者您可以通过在循环之前关闭
Application.ScreenUpdating并在循环之后重新打开它来掩盖问题并继续不断地点击工作表,但我敢打赌,如果你可以使用Union方法。