根据条件自动隐藏excel中的行

时间:2016-08-08 19:26:58

标签: excel vba excel-vba

我已经找到了几个类似问题的答案,但我不能让这个为我的生活工作。我试图根据单元格中的输入自动隐藏行。我在A列到J列中有数据,我想自动隐藏我在K列中输入值的行。我确信这可以完成,但我最终想要让VBA宏工作!

非常感谢任何帮助。

谢谢!

3 个答案:

答案 0 :(得分:2)

您需要的只是工作表中的工作表更改事件。 将此代码放在工作表的代码部分

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 11 Then ' Column K is column number 11
        Target.EntireRow.Hidden = True
    End If
End Sub

当您更改列k中任何单元格中的值时,它将隐藏整行 如果您只希望它在UsedRange中工作,您可以编辑代码以便以这种方式工作。

答案 1 :(得分:0)

试试这个。它遍历K列中的每个单元格,并用任何文本隐藏单元格。

Sub AutoHideRows()
'Get the last row of the used range
    Dim LastRow As Long
    LastRow = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row

'Loop through the range looking for non-blank values, and hide those rows
    Dim c As Range
    For Each c In Range("K1:K" & LastRow)
        If c.Value <> "" Then
            c.EntireRow.Hidden = True
            Else
            c.EntireRow.Hidden = False
        End If
    Next c
End Sub

如果您的第一行数据包含列标题,并且您想要将其从过滤器中排除,请更改以下代码行:

For Each c In Range("K1:K" & LastRow)

到此:

For Each c In Range("K2:K" & LastRow)

希望这有帮助!

答案 2 :(得分:0)

这是@dinotom答案的变体。当您在列K中输入值时,它会隐藏整行,但如果您从列K中删除值,则会隐藏整行。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 11 And Target.Value <> "" Then ' Column K is column number 11
        Target.EntireRow.Hidden = True
    End If
End Sub