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

我发现了几个类似问题的答案,但是我不能为了我的生活做这个工作。 我试图根据单元格中的input自动隐藏行。 我有列A到J中的数据,我想自动隐藏任何我在列K中input值的行。我确信这可以完成,但我在我的智慧结束尝试让VBAmacros工作!

任何帮助将不胜感激。

谢谢!

您所需要的只是工作表中的工作表更改事件。 把这段代码放在工作表的代码部分

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中工作,则可以编辑代码以便以此方式工作。

尝试这个。 它遍历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 

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

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

对此:

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

希望这可以帮助!

这是@dinotom的答案的变化。 当您在列K中input值时,它会隐藏整行,但是如果您从列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