Range()。AdvancedFilter忽略第一行?
TLDR:sortingalgorithm忽略(关于唯一性),只是复制第一个值?
下面的代码
Sub test() ActiveSheet.Range("A1:A7").AdvancedFilter _ Action:=xlFilterCopy, CopyToRange:=ActiveSheet.Range("B1"), _ Unique:=True End Sub
筛选以下行:
A1 to A7: 1 1 2 3 4 1 2
至:
1 1 2 3 4
我试着用文本,不同的起始行,sorting,而不是复制到另一个范围,但在我看来,好像第一个值只是复制,而不是与任何东西相比是唯一的。
这似乎应该是非常简单的,但我不知道我在这里做错了什么。 主页在这里没有提到任何东西。 有人能重现这种行为吗?
结果应该是范围A1:A7是唯一过滤(sorting顺序不重要):
1 2 3 4
您可以在列B上使用RemoveDuplicates
:
ActiveSheet.Range("A1:A7").Copy ActiveSheet.Range("B1") ActiveSheet.Range("B1:B" & Cells(Rows.Count, "B").End(xlUp).Row).RemoveDuplicates Columns:=1, Header:=xlNo
当然,不需要使用ActiveSheet
,最好使用完全限定的Worksheets
。
With Worksheets("YourSheetName") .Range("A1:A7").Copy .Range("B1") .Range("B1:B" & .Cells(.Rows.Count, "B").End(xlUp).Row).RemoveDuplicates Columns:=1, Header:=xlNo End With