在 VBA 中使用 AdvancedFilter 时有没有办法使用 "Not equal to"

Is there a way to use "Not equal to" when using AdvancedFilter in VBA

我的问题很简单,但我一直无法找到适用于任何地方的解决方案。

我想过滤掉一个范围内存在于另一个范围内的所有值 - 如下所示:

SheetA.Range("C1:C" & LastRowA).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=<> & SheetB.Range("B1:B" & LastRow), Unique:=False

但是,“<>”似乎不起作用,因为我收到语法错误。

提前致谢

如您所见,Advanced Filter 仅用于根据另一个范围内的值过滤一个范围 - 不适用于它们不存在的地方:https://docs.microsoft.com/en-us/office/vba/api/excel.range.advancedfilter

还有其他方法可以使用 VBA 实现此目的 - 例如,使用 autofilter 和设置过滤条件。 SO 上有很多示例说明如何执行此操作,其中一个在此处:

只是为了好玩,为了尝试解决我们绝对决定使用高级过滤器来实现您想要的结果,有一些方法可以绕过它来获得所需的结果...

如果您在要过滤的数据右侧添加一个额外的列,则在其中添加一个 CountIF 函数,例如 COUNTIF(SheetB!$B:$B0,$C2)(相应地设置范围,或者更好 - 使用命名范围)来确定该值是否在条件范围内。

然后您将一个单元格放在一旁,其中包含值 0,并使用您的高级过滤器过滤 countIF 列以匹配包含 0 的单元格范围。

然后这将过滤 countIF 为 0 的所有内容。

正如我所说,这纯粹是为了好玩,并不是特别实用 - 我个人会选择 autofilter 路线。