我试图在过滤A列后在B列中获取唯一名称,然后将其粘贴到C列中,如下所示:
Range("A1:B1").Select
Selection.AutoFilter Field:=1, Criteria1:="=" + Type
Range("B1").Select
ActiveSheet.Range("B:B").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=ActiveSheet.Range("C1"), Unique:=True
但是,这将绕过A列的过滤,并将返回B列的所有唯一名称。
如何将Autofilter或AdvancedFilter与多个标准一起使用?
谢谢,
答案 0 :(得分:3)
你可以像下面那样
Range("C1").Value = Range("B1").Value '<~~ heading of the column to get unique values from
Range("D1:D2") = Application.Transpose(Array(Range("a1").Value, myType)) '<~~ filtering criteria (temporarily used)
Range("A:A").SpecialCells(xlCellTypeConstants).Resize(, 2).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("D1:D2"), CopyToRange:=ActiveSheet.Range("C1"), Unique:=True
Range("D1:D2").ClearContents '<~~ clear filtering criteria temporarily used cells
如您所见,实际工作仅在一行中完成,前面有两个&#34;设置&#34;行(列&#34; C&#34;标题和过滤标准临时单元格),后面跟着一行删除临时单元格。
如果你不能写入范围(&#34; D1:D2&#34;),你可以使用任何其他范围(假设它是一列1列2)并相应地改变代码。
或者您可以使用&#34;复制&#34;方法
With Range("A:A").SpecialCells(xlCellTypeConstants).Resize(, 2)
.AutoFilter Field:=1, Criteria1:="=" + myType
.Columns(2).SpecialCells(xlCellTypeVisible).Copy
With .Columns(3)
.PasteSpecial xlPasteValues
.RemoveDuplicates Columns:=Array(1), Header:=xlYes
End With
.AutoFilter
End With