从单元格数据触发的有源滤波器

Active Filter Triggered from Cell Data

我想要的是一个过滤器,我可以在单元格中键入一个条目,然后对列的其余部分进行过滤器。清除此条目后,sheet 应该 return 恢复到我开始输入之前的样子。目前,当我从那个框中删除时,它会清除作品的所有数据sheet。

我目前使用的是这段代码。任何人都知道如何使这项工作干净利落?

Private Sub Worksheet_Change(ByVal Target As Range)
   If (Intersect(Target, Range("G2")) Is Nothing) _
   Then
      Exit Sub
   End If
   Cells.AutoFilter Field:=7, Criteria1:="=" & Range("G2")
End Sub

我相信如果您在 G2 中有一个空白值,此代码将删除条件。我还添加了一项检查以确保您的 Target 只是一个单元格,因为现在如果您修改了包含 G2.

的整个范围,您的代码将触发
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target is Nothing Then Exit Sub
    If Target.Cells.Count > 1 Then Exit Sub
    If Target.Row <> 2 Then Exit Sub
    Dim LastCol As Long
    LastCol = Cells(4, Columns.Count).End(xlToLeft).Column
    If Target.Value = "" Then
        Range(Cells(4, 1), Cells(4, LastCol).AutoFilter Field:=Target.Column
    Else
        Range(Cells(4, 1), Cells(4, LastCol).AutoFilter Field:=Target.Column, Criteria1:="=" & Target.Value
    End If
End Sub

更新代码以处理第 2 行中更改的任何值。