如何在不更新其他过滤器的情况下自动更新一个过滤器?

How can I automatically update one filter without updating other filters?

我有一个 Excel sheet,在 A 列和 B 列中带有过滤器。我希望开发一个宏,每当这项工作中的数据出现时,它就会自动更新 B 列中的过滤器sheet 已更新,但不会自动更新 A 列中的过滤器。这是我目前拥有的代码:

Private Sub Worksheet_Change(ByVal Target As Range)
    ActiveSheet.Range("$A:$B").AutoFilter Field:=2
    ActiveSheet.Range("$A:$B").AutoFilter Field:=2, Criteria1:="<>x", _
        Operator:=xlAnd
End Sub

正如预期的那样,每当数据更新时,此宏都会更新 B 列中的过滤器,以便自动过滤掉任何包含“x”的单元格。但是,此宏还会自动更新 A 列中的过滤器。这是有问题的,因为如果我已经在 A 列中应用了过滤器,然后插入新行,宏会自动隐藏新行,因为新行不符合 A 列的过滤条件。我希望宏自动更新 B 列中的过滤器而不同时更新 A 列中的过滤器,这样插入新行就不会触发宏立即隐藏这个新的行。

非常感谢任何输入!

我现在找到了一种解决方法,我清除了 A 列中的筛选器,然后在 C 列中添加了公式,这样,如果 A 列中的值满足所需的条件或为空,则这些公式输出 TRUE,并输出否则为假。然后我修改宏如下:

Private Sub Worksheet_Change(ByVal Target As Range)
    
    ActiveSheet.Range("$A:$C").AutoFilter Field:=3
    ActiveSheet.Range("$A:$C").AutoFilter Field:=3, Criteria1:="TRUE", _
        Operator:=xlOr, Criteria2:=""
        
    ActiveSheet.Range("$A:$C").AutoFilter Field:=2
    ActiveSheet.Range("$A:$C").AutoFilter Field:=2, Criteria1:="<>x", _
        Operator:=xlAnd
        
End Sub

此宏现在过滤掉 B 列中显示“x”的行,但也允许插入新行而不立即过滤掉这些行。可能有比这更简单的解决方案,但这似乎至少足以满足我的目的。