Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
784to788
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
784to788
784to788
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
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

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ß
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.

103 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige