Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1160to1164
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

Makro gesucht

Makro gesucht
Karin
Hallo Ihr Experten,
ich habe eine Datei mit Auftragsnummern die einfach, doppelt, dreifach bis 97-fach vorkommen können.
In Zeile 1 steht die Überschrift in Zeile 2 fangen die Daten an.
Jede Auftragsnummer (A2) hat ein Datum (B2) und eine Uhrzeit (C2)
Datum und Uhrzeit sind eine lfd. Nummer.
Ich möchte innerhalb einer Auftragsnummer die Zeile mit der höchsten lfd. Nr. beibehalten, die anderen Zeilen sollen gelöscht werden.
Ich hoffe ich konnte mein Problem einigermaßen verständlich rüberbringen.
Hat jemand von euch eine Idee?
Vielen Dank im voraus.
Userbild
Makro gesucht ? - Da ist es ja....
21.06.2010 12:38:14
NoNet
Hallo Karin,
ich habe Dein "gesuchtes" Makro gefunden : es hatte sich doch tatsächlich in meinem VBA-Editor versteckt ;-)
Aber : "Return to sender" - hier ist es :
Sub DatenFilternNeueste()
Dim lngZ1 As Long, lngZ2 As Long, lngLZ As Long
lngLZ = Cells(Rows.Count, 1).End(xlUp).Row
For lngZ1 = lngLZ To 2 Step -1
While Application.CountIf(Range("A1:A" & lngZ1 - 1), Cells(lngZ1, 1)) > 0
lngZ2 = Range("A1:A" & lngZ1 - 1).Find(Cells(lngZ1, 1)).Row
Rows(lngZ2).EntireRow.Delete
lngZ1 = lngZ1 - 1
Wend
Next
End Sub
Gruß, NoNet
PS: Pass zukünftig auf, dass es nicht wieder von Deinem PC verschwindet :-))
Anzeige
das stellt aber ....
21.06.2010 12:47:17
Rudi
Hallo,
nicht sicher, dass immer das höchste Datum/ Zeit erhalten bleibt.
Gruß
Rudi
Stimmt zwar, ist aber unerheblich...
21.06.2010 13:01:57
NoNet
Hey Rudi,
dass immer das höchste Datum/ Zeit erhalten bleibt.
wie man bei uns sagt : Ja und ?
Denn danach hatte Karin auch gar nicht gefragt, sondern :
ich möchte innerhalb einer Auftragsnummer die Zeile mit der höchsten lfd. Nr. beibehalten
und lfd.Nr. interpretiere ich eben als lfd.Zeilen-Nr.
Ein Datum 149782 gibt es in Excel ja auch nicht....also kann diese Spalte wohl kaum gemeint sein ;-))
Gruß, NoNet
Anzeige
nicht ganz...
21.06.2010 13:06:12
Rudi
Hallo,
Jede Auftragsnummer (A2) hat ein Datum (B2) und eine Uhrzeit (C2)
Datum und Uhrzeit sind eine lfd. Nummer.
Gruß
Rudi
DAS wiederum IST erheblich....Sortieren
21.06.2010 13:20:40
NoNet
Hey Rudi,
diesen Satz hatte ich wohl überlesen oder fehlinterpretiert !
Damit ist es natürlich erheblich, WAS in DATUM+Uhrzeit steht.
Lösen könnte man das mit o.g. Makro, indem man die Liste zuvor nach DATUM und UHRZEIT sortiert :
    lngLZ = Cells(Rows.Count, 1).End(xlUp).Row
Range("A2:C" & lngLZ).Sort Key1:=Range("B2"), Order1:=xlAscending, _
Key2:=Range("C2"), Order2:=xlAscending

Gruß, NoNet
Anzeige
AW: DAS wiederum IST erheblich....Sortieren
21.06.2010 14:29:07
Karin
Hallo NoNet,
vielen Dank für deine schnelle Antwort.
Ich habe dein Makro wie folgt abgespeichert:
Sub FilternNachDatum()
Dim lngZ1 As Long, lngZ2 As Long, lngLZ As Long
lngLZ = Cells(Rows.Count, 1).End(xlUp).Row
Range("A2:C" & lngLZ).Sort Key1:=Range("B2"), Order1:=xlAscending, _
Key2:=Range("C2"), Order2:=xlAscending
For lngZ1 = lngLZ To 2 Step -1
While Application.CountIf(Range("A1:A" & lngZ1 - 1), Cells(lngZ1, 1)) > 0
lngZ2 = Range("A1:A" & lngZ1 - 1).Find(Cells(lngZ1, 1)).Row
Rows(lngZ2).EntireRow.Delete
lngZ1 = lngZ1 - 1
Wend
Next
End Sub
Ich weiss jetzt nicht ob ich die Änderung die du mit Rudi besprochen hast an der richtigen Stelle eingebaut habe. ?
Das Makro läuft ohne Fehler durch, aber er sortiert das ganze falsch.
Ich hatte aber auch nicht erwähnt das nach den Spalten Auftragsnummer, Datum und Uhrzeit noch 12 weitere folgen.
sorry.
Hast du noch eine Idee?
Gruß
Karin
Anzeige
Idee ? - Ja: Lade bitte mal Deine Datei hoch _oT
21.06.2010 14:37:27
NoNet
_oT = "ohne Text"
AW: DAS wiederum IST erheblich....Sortieren
21.06.2010 14:37:30
Rudi
Hallo,
hast alles richtig gemacht.
Den zu filternden Bereich muss man aber normalerweise nicht definieren. es reicht eine Zelle innerhalb des Bereichs.
Sub FilternNachDatum()
Dim lngZ1 As Long, lngZ2 As Long, lngLZ As Long
lngLZ = Cells(Rows.Count, 1).End(xlUp).Row
Range("A1").Sort Key1:=Range("B2"), Order1:=xlAscending, _
Key2:=Range("C2"), Order2:=xlAscending
For lngZ1 = lngLZ To 2 Step -1
While Application.CountIf(Range("A1:A" & lngZ1 - 1), Cells(lngZ1, 1)) > 0
lngZ2 = Range("A1:A" & lngZ1 - 1).Find(Cells(lngZ1, 1)).Row
Rows(lngZ2).EntireRow.Delete
lngZ1 = lngZ1 - 1
Wend
Next
End Sub

Gruß
Rudi
Anzeige
@Rudi : Wenn keine Leerzeilen drin sind ! _oT
21.06.2010 14:40:42
NoNet
_oT
stimmt!
21.06.2010 14:49:30
Rudi
Hallo,
ist für mich selbstverständlich.
Sicherheitsvariante halt Range("A1:O" &lngLZ).Sort .....
Gruß
Rudi
AW: stimmt!
21.06.2010 15:03:38
Karin
Hallo ihr beiden,
ich habe da Makro jetzt wie folgt gespeichert:
Sub FilternNachDatum()
Dim lngZ1 As Long, lngZ2 As Long, lngLZ As Long
lngLZ = Cells(Rows.Count, 1).End(xlUp).Row
Range("A1").Sort Key1:=Range("B2"), Order1:=xlAscending, _
Key2:=Range("C2"), Order2:=xlAscending
For lngZ1 = lngLZ To 2 Step -1
While Application.CountIf(Range("A1:A" & lngZ1 - 1), Cells(lngZ1, 1)) > 0
lngZ2 = Range("A1:A" & lngZ1 - 1).Find(Cells(lngZ1, 1)).Row
Rows(lngZ2).EntireRow.Delete
lngZ1 = lngZ1 - 1
Wend
Next
End Sub
Es funktioniert.
Danke dafür.
Muss ich jetzt noch die "Sicherheitsvariante" --- Range("A1:O" &lngLZ).Sort .....
... einbauen?
Wenn ja,- wo ?
Gruß
Karin
Anzeige
Sicherheitsvariante
21.06.2010 15:11:30
Rudi
Hallo,
wenn du eine 'ordentliche' Tabelle ohne leere Zeilen und Spalten hast, kannst du alles so lassen.
Gruß
Rudi
AW: Sicherheitsvariante
21.06.2010 15:38:46
Karin
Hallo Rudi,
ok. - die Tabelle ist immer ohne Leerzeilen.
Vielen Dank nochmal für deine Hilfe.
Bis zum nächsten Mal.
Liebe Grüße
Karin
AW: Makro gesucht ? - Da ist es ja....
21.06.2010 15:41:39
Karin
Hallo NoNet,
nach langem hin und her funktioniert das Makro nun ja.
Vielen Dank nochmal für deine Hilfe.
Bis demächst.
Liebe Grüße
Karin
PS: Ich pass auch auf, dass es nicht wieder von meinem PC verschwindet :-))

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige