根据多列值在Excel中隐藏行

时间:2018-07-03 19:47:19

标签: excel excel-vba excel-formula excel-2010 vba

如何隐藏基于多个列值的行?示例:如果“项目”,“团队成员”,“优先级”和“状态”字段均为空白,则该行将自行隐藏。

enter image description here

1 个答案:

答案 0 :(得分:1)

我看过您的其他文章,但我并不真正认为这是构建仪表板的方式。您实质上是在创建其他工作表的副本。 Advance Filter似乎更适合这里。

如果您设置为当前方法,这将确定列中使用最少的单元格,并根据您的条件隐藏该单元格上方的行。我将添加一个名为“刷新我的Dash” 之类的命令按钮,并将其链接到此宏。

Option Explicit

Sub HideRow()

Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
Dim LRowC, LRowD, LRowF, LRowH, LRow As Long
    LRowC = ws.Range("C" & ws.Rows.Count).End(xlUp).Row
    LRowD = ws.Range("D" & ws.Rows.Count).End(xlUp).Row
    LRowF = ws.Range("F" & ws.Rows.Count).End(xlUp).Row
    LRowH = ws.Range("H" & ws.Rows.Count).End(xlUp).Row
    LRow = Application.WorksheetFunction.Max(LRowC, LRowD, LRowF, LRowH)

Dim i As Long

Application.ScreenUpdating = False
ws.Rows.Hidden = False
    For i = LRow To 2 Step -1
        If ws.Range("C" & i).Text = "" And ws.Range("D" & i).Text = "" And ws.Range("F" & i).Text = "" And ws.Range("H" & i).Text = "" Then
            ws.Rows(i).EntireRow.Hidden = True
        End If
    Next i
Application.ScreenUpdating = True

End Sub