【发布时间】:2015-12-23 14:01:06
【问题描述】:
我尝试了多种方法来过滤列中的唯一值(包括空格和内部带有空格的空格)。我想过滤这些值,然后将它们粘贴到另一张表的 a 列中。
Sub filter_2()
With Sheets("ICM flags")
.Columns("a").AdvancedFilter Action:=xlFilterCopy, copytorange:=Sheets("Flag Update (2)").Range("a2"), Unique:=True
End With
End Sub
上述方法适用于.range("a2"),但如果我尝试使用.range("a1"),则会收到运行时错误 1004 类的高级过滤方法失败。
我得到运行时错误 1004 类的高级过滤方法失败,方法如下。
Sub unique_filter()
Sheets("ICM flags").Columns("a").AdvancedFilter _
Action:=xlFilterCopy, _
copytorange:=Sheets("Flag Update (2)").Range("a1"), Unique:=True
End Sub
对于上述两种方法以及对 Davesexcel 答案的编辑:
Sub AdvFilter()
Dim ws As Worksheet, sh As Worksheet
Dim rng As Range, Frng As Range
Set sh = Sheets("ICM Flags")
Set Frng = sh.Range("A:A")
Set ws = Sheets("Flag Update (2)")
Set rng = ws.Range("A1")
'Frng.AdvancedFilter Action:=xlFilterCopy, copytorange:=rng, Unique:=True
Frng.AdvancedFilter Action:=xlFilterInPlace, Unique:=True
End Sub
该方法适用于FilterInPlace,但不适用于CopyToRange
【问题讨论】:
-
有时(并非总是)如果未选择您要过滤的范围,则会发生此错误。尝试在过滤前选择范围。选择不应该是必需的,但我已经看到它有所作为。
-
如果您想将高级过滤器复制到另一张工作表,我相信您需要使用变量。