2017-06-19 4 views
1

Meine Datenmenge beginnt mit einer Reihe von leeren Zeilen, bevor es den ersten Teil der gefüllten Zellen erreicht. In Spalte B (verschiebt sich in Spalte C, nachdem das Makro ausgeführt wurde) habe ich einen Officer-Namen, gefolgt von einer Reihe von leeren Zeilen, gefolgt von einem anderen Officer-Namen usw. Es ist möglich, dass diese Spalte doppelte Officernamen enthält.Excel erweiterte Filter für Uniques Ergebnisse in einem doppelten Eintrag

Ich habe versucht, ein erweitertes Filtermakro zu schreiben, um die Liste der eindeutigen Offiziersnamen in Zelle A1 zu kopieren.

Private Sub UserForm_Initialize() 

Columns("A:A").Insert 'inserts column to left of A for officer names to be pasted in 


With Range("c1:c" & Cells(Rows.Count, 3).End(xlUp).Row) 
.AdvancedFilter Action:=xlFilterCopy, copytorange:=Cells(2, 1), unique:=True 
On Error Resume Next 
End With 

End Sub 

Aber mein Ergebnis ist dieses:
Offizier A
(leere Zeile)
Offizier A
Offizier B
Offizier C
etc ....

Da dieses Ergebnis Das gleiche wie wenn ich einen erweiterten Filter ohne VBA gemacht hätte, denke ich, dass meine Rohdaten so formatiert sind. Ich habe versucht, manuell einen Header zu Officer Name Spalte ohne Glück hinzuzufügen.

Wie kann ich meine Ergebnisse erhalten, um nur die Liste der nicht duplizierten Namen anzuzeigen?

Antwort

0

Sie stattdessen einfach die „RemoveDuplicates“ Methode verwenden könnte.

With ActiveSheet 
    .Columns("A").Insert 
    .Range("C1:C" & .Cells(.Rows.Count, 3).End(xlUp).Row).Copy 
    .Range("A1").PasteSpecial Paste:=xlPasteValues 
    .Range("A:A").RemoveDuplicates Columns:=1, Header:=xlNo 
    Application.CutCopyMode = False 
End With 
+0

Ich suchte und suchte nach einer Methode wie diese, weil ich dachte, dass VBA so etwas hatte. Vielen Dank. – GoldStandard

0

Ihr Code ist großartig. Es ist nur so, dass die oberste Zeile als Kopfzeile behandelt wird, deshalb sehen Sie Officer A zweimal und keinen anderen Officer zweimal.

Ich empfehle, eine eigene Kopfzeile wie "Officer Name" zu erstellen und diese in den Filter aufzunehmen. Sie werden sehen, dass dies in der zweiten Spalte dupliziert ist, und Sie können es ignorieren.

Sie können die leeren Zeilen löschen, indem mithilfe von Code wie

ActiveSheet.Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete 
+0

Das würde auch funktionieren. Vielen Dank. – GoldStandard

Verwandte Themen