使用 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

请注意,这不会隐藏完全空白的行,但可以根据需要进行调整。