从单元格数据触发的有源滤波器
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 行中更改的任何值。
我想要的是一个过滤器,我可以在单元格中键入一个条目,然后对列的其余部分进行过滤器。清除此条目后,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 行中更改的任何值。