Einzelnen Beitrag anzeigen
Alt 19.05.2008, 10:59   #4 (permalink)
[EID]-Mr.GiZMO
semi-diabolisch
 
Benutzerbild von [EID]-Mr.GiZMO
 

Registriert seit: 12.09.2005
Beiträge: 2.922

[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein

Standard AW: (VB[A]) Doppelte Teileinträge markieren/aussortieren lassen

Ich hab was gecodet!

Vorraussetung:
- Spalte 1 - Nr oder so
- Spalte 2 - Name

Das tut das Makro:
- Zählt Anzahl der Zeilen (also hier Datensätze)
- sortiert nach Name (Spalte 2)
- schaut von unten nach oben (musste ich jetzt auf die Schnelle so coden) nach gleichen Namen in zwei übereinanderstehenden Zeilen
- löscht die untere
- funktioniert auch bei 3, 4, 5... gleichen Namen
- behalten wird sortiertechnisch die Zeile mit der kleinsten Zahl in Spalte 1
- am Ende wieder nach Spalte 1 sortiert


Et voila:
Code:
' ANZAHL ZEILEN LESEN
    Function Zeilenzahl() As Integer
        Range("A1").Select
        Zeilenzahl = Selection.CurrentRegion.Rows.Count
    End Function
    

Sub Dupletten_loeschen()
'
' Dupletten_loeschen Makro
'

' SORTIEREN
    ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Add Key:=Range("B1"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Tabelle1").Sort
        .SetRange Range("A1:B" & Zeilenzahl())
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    
    
' VON UNTEN NACH OBERN DUPLETTEN LÖSCHEN
    Dim i As Integer
    
    For i = (Zeilenzahl() - 1) To 2 Step -1
        If Worksheets("Tabelle1").Cells(i - 1, 2) = Worksheets("Tabelle1").Cells(i, 2) Then Selection.Rows(i).EntireRow.Delete
    Next i
    
' WIEDER NACH NUMMER SORTIEREN
    ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Add Key:=Range("A1"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Tabelle1").Sort
        .SetRange Range("A1:B" & Zeilenzahl())
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
     
End Sub
Einfach per Alt+F11 VB öffnen und in ein Modul deiner Wahl packen.


Bei gewünschten Korrekturen, bitte melden.


So, back to work
War mein Post nützlich für dich? Ein Danke oder eine Bewertung sind immer schön.
Teilnehmer der Initiative "User verbessern Qualität im Forum" | Meine Systeme

Darf ich mal bitte vorbei?! Das geht nach Kompetenz... Danke! | | | Einmal dachte ich, ich hätte Unrecht. Hab mich aber getäuscht!
"Es ist gelogen, dass Videogames Kids beeinflussen. Hätte Pacman das getan, würden wir heute durch dunkle Räume irren, Pillen fressen und elektronische Musik hören."

[EID]-Mr.GiZMO ist offline   Mit Zitat antworten