使用 For Loop Over Range 隐藏行
Hiding Rows with For Loop Over Range
我有一些数据如下所示(新用户无法直接嵌入):
我的目标是隐藏所有月份列中显示“#Missing”或 0 的任何行。所以从附图来看,前三行永远不会被隐藏,但截至目前,第 4 行将被隐藏,因为只有“#Missing”和 0 个值。
我仔细阅读了较早的帖子并发现了一些类似的问题,但没有什么能完全解决我的小众问题(看起来小众)。就是这么说如果这个问题已经在别处解决了请见谅,我就是没找到。
这是我的出发点,可能会大错特错。我觉得这应该是一个相对简单的解决方案,但不太确定:
Sub RowHider()
Dim c As Range
For Each c In Range("I12:T10000")
If c.Value = "#Missing" Or 0 Then
c.EntireRow.Hidden = True
End If
Exit For
Next c
End Sub
也许是这样的,使用 WorksheetFunction.CountIfs
:
Sub RowHider()
Dim c As Range
Dim rngToHide As Range
For Each c in Range("I12:T10000").Rows
If WorksheetFunction.CountIfs(c,"<>0",c,"<>#Missing") = 0 Then
If rngToHide Is Nothing Then
Set rngToHide = c
Else
Set rngToHide = Union(rngToHide, c)
End If
End If
Next
If Not rngToHide Is Nothing Then
rngToHide.EntireRow.Hidden = True
End If
请注意,这不会隐藏完全空白的行,但可以根据需要进行调整。
我有一些数据如下所示(新用户无法直接嵌入):
我的目标是隐藏所有月份列中显示“#Missing”或 0 的任何行。所以从附图来看,前三行永远不会被隐藏,但截至目前,第 4 行将被隐藏,因为只有“#Missing”和 0 个值。
我仔细阅读了较早的帖子并发现了一些类似的问题,但没有什么能完全解决我的小众问题(看起来小众)。就是这么说如果这个问题已经在别处解决了请见谅,我就是没找到。
这是我的出发点,可能会大错特错。我觉得这应该是一个相对简单的解决方案,但不太确定:
Sub RowHider()
Dim c As Range
For Each c In Range("I12:T10000")
If c.Value = "#Missing" Or 0 Then
c.EntireRow.Hidden = True
End If
Exit For
Next c
End Sub
也许是这样的,使用 WorksheetFunction.CountIfs
:
Sub RowHider()
Dim c As Range
Dim rngToHide As Range
For Each c in Range("I12:T10000").Rows
If WorksheetFunction.CountIfs(c,"<>0",c,"<>#Missing") = 0 Then
If rngToHide Is Nothing Then
Set rngToHide = c
Else
Set rngToHide = Union(rngToHide, c)
End If
End If
Next
If Not rngToHide Is Nothing Then
rngToHide.EntireRow.Hidden = True
End If
请注意,这不会隐藏完全空白的行,但可以根据需要进行调整。