Range (). AdvancedFilter ignoriert erste Zeile?

TLDR: Sortieralgorithmus ignoriert (in Bezug auf die Eindeutigkeit) und kopiert nur den ersten Wert?

Der folgende Code

Sub test() ActiveSheet.Range("A1:A7").AdvancedFilter _ Action:=xlFilterCopy, CopyToRange:=ActiveSheet.Range("B1"), _ Unique:=True End Sub 

filtert die folgenden Zeilen:

 A1 to A7: 1 1 2 3 4 1 2 

zu:

 1 1 2 3 4 

Ich probierte es mit Text, verschiedenen Startreihen, sortiere an Ort und Stelle, anstatt in einen anderen Bereich zu kopieren, aber es scheint mir, als ob der erste Wert nur kopiert und nicht mit irgendetwas verglichen wird, was Einzigartigkeit betrifft.

Es scheint so, als sollte es wirklich einfach sein, aber ich weiß nicht, was ich hier falsch mache. Die Hauptseite erwähnt hier nichts. Kann jemand dieses Verhalten reproduzieren?

Das Ergebnis sollte sein, dass der Bereich A1: A7 eindeutig gefiltert ist (Sortierreihenfolge ist nicht wichtig):

 1 2 3 4 

Solutions Collecting From Web of "Range (). AdvancedFilter ignoriert erste Zeile?"

Sie können RemoveDuplicates für Spalte B verwenden:

 ActiveSheet.Range("A1:A7").Copy ActiveSheet.Range("B1") ActiveSheet.Range("B1:B" & Cells(Rows.Count, "B").End(xlUp).Row).RemoveDuplicates Columns:=1, Header:=xlNo 

Natürlich müssen Sie ActiveSheet nicht verwenden, und stattdessen sollten Sie stattdessen voll qualifizierte Worksheets verwenden:

 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