Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Doppelte Einträge nach Datum löschen

Doppelte Einträge nach Datum löschen
28.07.2006 07:59:38
Marcel
Moin,
hab mal wieder ein Problem mit meiner Excel Liste.
Ich habe Spalte A und Spalte B.
Spalte A: Name
Spalte B: Datum - Uhrzeit (z.B. 31.03.2006 - 12:39)
jetzt soll kein name doppelt vorhanden sein. wenn ein name doppelt vorkommt, soll nur der eintrag mit dem aktuellsten datum - uhrzeit erhalten bleiben.
vorher:
| Mueller | 31.03.2006 - 12:39 |
| Mueller | 31.03.2006 - 11:19 |
| Mueller | 31.03.2006 - 14:36 |
| Mueller | 31.03.2006 - 13:35 |
nachher:
| Mueller | 31.03.2006 - 14:36 |
Zur Zeit habe ich noch überhautp keinen Plan, wie ich da ran gehen könnte.
Gruß
Marcel
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Doppelte Einträge nach Datum löschen
28.07.2006 08:33:26
Uwe
Hall, Marcel
Es sei die Spalte A die Namensspalte, B die Datums-Uhrzeitspalte, c und D freie Spalten
Ohne VBA wäre folgende Lösung möglich:
1. sortiere Liste: SpalteA:aufsteigend, SpalteB:abststeigend
2. freie Spalte wie folgt füllen:
2.1. C1=A1, D1=B1
2.2. Formel ab Zelle C2 =WENN(A2=A1;"";A2)
2.2. Formel ab Zelle D2 =WENN(ISTLEER(C2);"";B2)
3. Formeln über Bereich ziehen
4. Bereich C1:Dmax markieren, kopieren, Zelle C1 anwählen und "Inhalt einfügen" - Werte ausführen
5. Tabelle nach Spalte C sortieren.
6. ungültigen Bereich der Tabelle (Zeilen, in denen nichts in den Zellen der Spalte C und D steht) löschen
Das ganze natürlich erst einaml an einer Kopie der Arbeitstabelle durchführen.
Eine VBA-Lösung wäre natürlich eleganter und lohnenswert, wenn die Aufgabenstellung häufiger auftaucht. Sag' bescheid, wenn es so ist.
Gruß,
Uwe
Anzeige
AW: Doppelte Einträge nach Datum löschen
28.07.2006 08:42:59
Marcel
Hi,
die Aufgabenstellung taucht öfter auf und sollte auch mit VBA verwirklicht werden...
kannst mir dabei helfen?
ich werde deine variante jetzt mal ausprobieren... danke ;)
AW: Doppelte Einträge nach Datum löschen
28.07.2006 08:57:40
Uwe
Hallo, Marcel,
sofern nicht zwischenzeitlich eine VBA-Lösung hier vorgestellt wird, werde ich mich frühstens erst ab nachmittags daran setzen können, eine Gerüst für diese VBA-Lösung zu erstellen.
Hilfreich wäre es zu wissen, ob die Ergebnisse in einer neuen Tabelle, in neuen Spalten oder über den Bestand geschreiben werden sollen. Auch wäre es nützlich zu wissen, welche Spalten einer Tabelle durch den Vorgang erfaßt werden sollen (Bild oder Tabellenauszug wäre dienlich)
Gruß,
Uwe
Anzeige
AW: Doppelte Einträge nach Datum löschen P.S.
28.07.2006 09:09:07
Uwe
P.S.
Wenn Du die EXCEL-Tabellenblatt-Lösung durchführst, kannst Du natürlich die VBA-Makro-Record-Funktion benutzen, um selbst ein VBA-Programmgerüst zu erstellen. Dabei könntest Du auch auf das Erstellen der Spoalte D in meiner Ablaufbeschreibung verzichten.
Uwe
AW: Doppelte Einträge nach Datum löschen
28.07.2006 09:16:12
Galenzo
Mein (unkonventioneller) Vorschlag:
Columns("A:B").Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("B2") _
, Order2:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal
Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)).AdvancedFilter Action:=xlFilterInPlace, Unique:=True
Cells.SpecialCells(xlCellTypeVisible).Copy Sheets("Tabelle2").Range("A1")
ActiveSheet.ShowAllData
Das Makro sortiert zunächst. Damit stehen die höchsten Datumswerte je Name oben. Dann werden die doppelten Namen gefiltert. Damit bleibt je Name nur eben diese höchste Datumswert stehen. Nun wird das ganze nur noch auf die 2. Seite kopiert. Hilft das?
/Galenzo
Anzeige
AW: Doppelte Einträge nach Datum löschen
31.07.2006 08:37:18
Marcel
Moin,
danke erst einmal für deine Lösung, jedoch soll das ganze nicht auf die 2. Seite kopiert werden, sondern die doppelten, älteren zeilen sollen einfach gelösch werden.
die klappt auch, wenn ich den letzten schritt:
ActiveSheet.ShowAllData
auskommentiere, jedoch sind dann die verwendeten zeilen auf der 1. seite blau markiert, warum auch immer...
gruß
Anzeige
AW: Doppelte Einträge nach Datum löschen
31.07.2006 09:41:33
Marcel
hab mir jetzt mal selber was gebastelt. das funzt auch...

Private Sub CommandButton1_Click()
Dim reihe As Long
Dim i As Long
'-Letze beschriebene Zeile in Spalte A finden
i = 3
Do
If ActiveSheet.Cells(i, 1) <> "" Then
i = i + 1
End If
Loop Until ActiveSheet.Cells(i, 1) = ""
i = i - 1
'-Erst nach Namen, dann nach Zugriff Sortieren. Letzter Zugriff oben
Range(Cells(1, 1), Cells(i, 2)).Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Key2:=Range("B1") _
, Order2:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal
'- Überprüft, ob sich in Spalte A zwei gleiche Namen befinden. Der ältere Eintrag wird
'- gelöscht
reihe = 1
Do
If Cells(reihe, 1) = Cells(reihe + 1, 1) Then
If Cells(reihe, 2) >= Cells(reihe + 1, 2) Then
Rows(reihe + 1).Select
Selection.Delete Shift:=xlUp
End If
End If
reihe = reihe + 1
Loop Until Cells(reihe, 1) = ""
'- Nach Zugriffsdatum sortieren. Letzer Zugriff oben
Range(Cells(1, 1), Cells(i, 2)).Select
Selection.Sort Key1:=Range("B1"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub

Anzeige
AW: Doppelte Einträge nach Datum löschen
31.07.2006 10:34:14
Uwe
Hallo, Marcel,
Das sieht so ähnlich aus wie diese Lösung.
Der Sortierblock ist klar.
Danach wir die ActiveCell gewählt, nämlich die, die eine Zeile unter der ersten Datenzeile steht. Wenn dieser Zelleninhalt nicht leer ist, also das Tabellenende nicht erreicht ist, wird geprüft, ob der Namenseintrag gleich mit der darüberliegenden Zelle (.Offset(deltaRow=-1, deltaColumn=0) ist. Ist das der Fall, wird dei Zeile gelöscht und dadurch die nächste Zelle in der Spalte zur ActivCell. War keine löschung notwendig, dann wird der Focus auf die folgende Zelle der Spalte gesetzt (.Offset(deltaRow=1, deltaColumn=0).


Sub DeleteDouble()
Columns("A:B").Sort Key1:=Range("A2"), _
Order1:=xlAscending, Key2:=Range("B2"), _
Order2:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("A3").Select
While Len(ActiveCell.Value) > 0
If ActiveCell = ActiveCell.Offset(-1, 0) Then
Rows(ActiveCell.Row).Delete Shift:=xlUp
Else
ActiveCell.Offset(1, 0).Select
End If
Wend
End Sub

Gruß,
Uwe
Anzeige
AW: Doppelte Einträge nach Datum löschen
ransi
Hallo
Gestern war was ähnliches hier:
http://www.office-loesung.de/ftopic91742_0_0_asc.php
Angepasst auf deine Verhältnisse tut es dann dieser code:


Option Explicit
Public Sub test()
    Dim arrNum As Variant
    Dim arrDat
    Dim arrges(65536, 2) As Variant
    Dim Letzte As Long
    Dim bereich As Range
    Dim zelle As Range
    Dim L As Long
    Dim Z As Long
    Dim T As Long
    Dim Datum As Date
    Dim Blatt As Worksheet
Set Blatt = Worksheets("Tabelle1") 'Anpassen
Letzte = Blatt.Range("A65536").End(xlUp).Row
Set bereich = Blatt.Range("A2:A" & Letzte)
arrNum = Blatt.Range("A2:A" & Letzte).Value
arrDat = Blatt.Range("B2:B" & Letzte).Value
arrges(L, 0) = "Name"
arrges(L, 1) = "Datum"
L = L + 1
For Each zelle In bereich
    If WorksheetFunction.CountIf(bereich, zelle.Value) > 1 Then
        If WorksheetFunction.CountIf(Blatt.Range("a2:A" & zelle.Row), zelle.Value) = _
        WorksheetFunction.CountIf(bereich, zelle.Value) Then
            arrges(L, 0) = zelle
            L = L + 1
        End If
    End If
Next
For Z = 1 To L
Datum = 1
    For T = 1 To UBound(arrNum)
        If arrges(Z, 0) = arrNum(T, 1) Then
            If Datum < arrDat(T, 1) Then
                Datum = arrDat(T, 1)
                arrges(Z, 1) = Format(Datum, "DD.MM.YY")
            End If
        End If
    Next
Next
Sheets("Tabelle2").Range("A:B") = arrges 'Anpassen
End Sub


ransi
Anzeige
AW: Doppelte Einträge nach Datum löschen
31.07.2006 08:50:17
Marcel
Moin,
dieser Versuch ist gescheitert.
Typen unvertäglich.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Doppelte Einträge nach Datum in Excel löschen


Schritt-für-Schritt-Anleitung

Um doppelte Einträge in einer Excel-Liste nach Datum zu löschen, gehe wie folgt vor:

  1. Daten sortieren:

    • Sortiere Deine Liste zuerst nach Spalte A (Namen) in aufsteigender Reihenfolge und Spalte B (Datum - Uhrzeit) in absteigender Reihenfolge.
    • Gehe zu Daten > Sortieren und wähle die entsprechenden Spalten aus.
  2. Hilfsspalten hinzufügen:

    • Füge zwei leere Spalten (C und D) neben Deinen Daten hinzu.
    • In Zelle C1 schreibe =A1 und in Zelle D1 schreibe =B1.
    • In Zelle C2 schreibe die Formel: =WENN(A2=A1;"";A2).
    • In Zelle D2 schreibe die Formel: =WENN(ISTLEER(C2);"";B2).
    • Ziehe die Formeln in C2 und D2 nach unten, um sie auf alle Zeilen anzuwenden.
  3. Werte einfügen:

    • Markiere den Bereich C1:Dmax, kopiere ihn und füge ihn an der gleichen Stelle mit "Inhalte einfügen" - Werte ein.
  4. Tabelle sortieren:

    • Sortiere nun die Tabelle nach Spalte C, um die doppelten Einträge zu gruppieren.
  5. Leere Zeilen löschen:

    • Lösche alle Zeilen, in denen in den Spalten C und D nichts steht.
  6. Ergebnisse überprüfen:

    • Überprüfe, ob nur der aktuellste Eintrag pro Name in der Liste verbleibt.

Häufige Fehler und Lösungen

  • Fehler: Die Formeln geben Fehler aus:

    • Überprüfe, ob die Zellreferenzen korrekt sind und die Formeln in der richtigen Zeile beginnen.
  • Fehler: Falsche Sortierung:

    • Stelle sicher, dass Du zuerst nach Namen und dann nach Datum sortierst.
  • Fehler: Doppelte Einträge bleiben bestehen:

    • Dies kann passieren, wenn die Daten nicht richtig sortiert sind. Überprüfe die Sortierung erneut.

Alternative Methoden

Eine VBA-Lösung kann effizienter sein, insbesondere wenn Du häufig doppelte Einträge löschen musst. Hier ist ein einfaches VBA-Skript:

Sub DeleteDouble()
    Columns("A:B").Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("B2"), Order2:=xlDescending, Header:=xlGuess
    Range("A3").Select
    While Len(ActiveCell.Value) > 0
        If ActiveCell = ActiveCell.Offset(-1, 0) Then
            Rows(ActiveCell.Row).Delete Shift:=xlUp
        Else
            ActiveCell.Offset(1, 0).Select
        End If
    Wend
End Sub

Dieses Skript sortiert die Daten und löscht die älteren doppelten Einträge.


Praktische Beispiele

Angenommen, Du hast folgende Daten:

Name Datum - Uhrzeit
Müller 31.03.2006 - 12:39
Müller 31.03.2006 - 14:36
Müller 31.03.2006 - 11:19

Nach der Anwendung der oben genannten Methode sollte das Ergebnis wie folgt aussehen:

Name Datum - Uhrzeit
Müller 31.03.2006 - 14:36

Tipps für Profis

  • Makros verwenden: Wenn Du regelmäßig mit doppelten Einträgen arbeitest, erstelle ein Makro, um den Prozess zu automatisieren.
  • Datenvalidierung: Nutze die Datenvalidierungsfunktionen in Excel, um die Eingabe von doppelten Werten zu verhindern.
  • Bedingte Formatierung: Verwende die bedingte Formatierung, um doppelte Werte hervorzuheben, bevor Du sie entfernst.

FAQ: Häufige Fragen

1. Wie kann ich die doppelten Einträge in Excel anzeigen? Du kannst die bedingte Formatierung verwenden, um doppelte Werte in bestimmten Spalten hervorzuheben.

2. Was passiert, wenn ich versehentlich die falschen Daten lösche? Stelle sicher, dass Du immer eine Kopie Deiner Daten hast, bevor Du Löschvorgänge durchführst. Nutze die Rückgängig-Funktion (Strg + Z), um die letzten Änderungen rückgängig zu machen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige