Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1520to1524
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Linien löschen

Linien löschen
17.10.2016 09:57:52
Herbert
Hallo,
Ich habe ein Problem, bei welchem ich für eine Hilfe dankbar wäre:
Ich habe eine Liste mit Daten (variable Länge). In den Spalten habe ich jeweils die Auftragsnummer, welche chronologisch geordnet ist. Die Auftragsnummer kann mehrmals erscheinen.
Nun möchte ich mit einer VBA-Prozedur jeweils nur die letzte linie der Auftragsnummer behalten. Die anderen Linien möchte ich löschen.
Z. B.
Auftragsnummer Position Betrag
A001 Material 150.00
A001 Fabrikation 800.00
A002 Material 120.00
Sollte so aussehen
Auftragsnummer Position Betrag
A001 Fabrikation 800.00
A002 Material 120.00
Ich wäre dankbar für jede Hilfe.
Gruss
Herbert

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Linien löschen
17.10.2016 10:14:46
ChrisL
Hi Herbert
Auftragsnummer in Spalte A, Titel in Zeile 1:
Sub t()
Dim iZeile As Long
For iZeile = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
If WorksheetFunction.CountIf(Range("A2:A" & iZeile), Cells(iZeile, 1)) > 1 Then _
Rows(iZeile).EntireRow.Delete
Next iZeile
End Sub
cu
Chris
AW: Linien löschen
17.10.2016 10:31:08
UweD
Hallo Chris
löscht genau die falsche Zeile weg.
Die Letzte soll doch stehen bleiben.
LG UweD
AW: Linien löschen
17.10.2016 10:39:41
ChrisL
ups... Danke Uwe für den Hinweis
Sub t()
Dim iZeile As Long
Dim letzteZeile As Long
letzteZeile = Cells(Rows.Count, 1).End(xlUp).Row
For iZeile = letzteZeile To 2 Step -1
If WorksheetFunction.CountIf(Range("A" & iZeile & ":A" & letzteZeile), Cells(iZeile, 1)) _
> 1 Then Rows(iZeile).EntireRow.Delete
Next iZeile
End Sub

cu
Chris
Anzeige
AW: Linien löschen
17.10.2016 10:18:42
Daniel
Hi
hat die Liste auch ein Datum nach dem sie sortiert werden kann, dann sortiere die Liste nach Datum absteigend, so dass der aktuellste Wert (der der Stehen bleiben soll) nicht unten sondern oben steht.
dann kannst du die Funktion DATEN - DATENTOOLS - DUPLIKATE ENTFEFREN auf die liste answenden mit der Auftragsnummer als Kriterium.
das Duplikate-Entfernen löscht alle Zeilen, wenn sich die Werte in den Kriteriumsspalten in einer Zeile wiederholen.
Nur die jeweils erste Zeile bleibt stehen, alle folgenden Zeilen mit gleichen Werten werden gelöscht.
Durch die geschickte Sortierung muss man sicherstellen, dass die Zeile, die stehenbeiben soll, oben steht.
Gruß Daniel
Anzeige
AW: Linien löschen
17.10.2016 10:59:24
Herbert
Vielen Dank für die Antworten. Es hat mir sehr geholfen.
Gruss und schöne Woche
Herbert
AW: Linien löschen
17.10.2016 11:05:13
UweD
Hallo
hab noch eine Lösung mit Formel und Filter.
Je nach Datenmenge viel schneller als Schleife...
Sub Nur_Letzter()
    On Error GoTo Fehler
    Dim LR As Long, Sp As Integer
    With Sheets("Tabelle1")
        LR = .Cells(.Rows.Count, "A").End(xlUp).Row
        Sp = .Cells(1, .Columns.Count).End(xlToLeft).Column + 1
        .Cells(1, Sp) = "TMP"
        .Range(Cells(2, Sp), Cells(LR, Sp)).FormulaR1C1 = _
            "=IF(COUNTIF(R2C1:RC1,RC1)=COUNTIF(C1,RC1),1,"""")"
            
        .Columns(Sp).AutoFilter
        .Columns(Sp).AutoFilter Field:=1, Criteria1:="="
        .Rows("2:" & LR).Delete Shift:=xlUp
        .Columns(Sp).AutoFilter
        .Columns(Sp).Delete xlLeft
    End With
    '*** Fehlerbehandlung 
    Err.Clear
Fehler:
    If Err.Number <> 0 Then MsgBox "Fehler: " & _
        Err.Number & vbLf & Err.Description: Err.Clear
End Sub

LG UweD
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige