04.08.2025, 19:07
jetzt löscht es alle!
wie mach ich dass mit LastRow2 und LastRow3?
wie mach ich dass mit LastRow2 und LastRow3?
![]() Forum des Excel-Verein 2015 e.V. |
Das Clever-Excel-Forum-Treffen
findet vom 19.09. - 21.09.2025 in Bad Arolsen statt. Zu den Infos kommt Ihr oben über den Link. |
![]() |
04.08.2025, 19:07
jetzt löscht es alle!
wie mach ich dass mit LastRow2 und LastRow3?
04.08.2025, 19:28
Naja, momentan steht die Zeile ja noch ganz am Anfang (vor der äußeren Schleife, bzw vor dem ersten FOR-NEXT),
dh der Wert wird einmal ermittelt und ist dann für alle Schleifendurchläufe gleich. allerdings löscht du ja in der inneren Schleife Zeilen, dh beim nächsten Umlauf hat die Tabelle dann ja weniger Zeilen und du könntest dann mit der kleinern Zeilennummer loslaufen. dazu kannst du dann die Befehlszeile mit dem LastRow2 = .....End(xlup).Row verschieben, so dass es zwischen dem ersten und zweiten FOR-NEXT steht. Obs viel bringt, weiß ich nicht. ich würde dir aber meine Methode empfehlen. Vor allem wenn die Listen länger sind, kann man hier viel optimieren, so dass es schneller geht. Gruß Daniel
04.08.2025, 19:44
Ich glaube ich brauch eine andere Lösung.
Das dauert ewig. Das Problem ist aber, dass es Ideodensicher sein muss. Mit in der Menüleiste rumklicken, dafür sind die schon mal zu doof.
04.08.2025, 20:02
Hi,
Auch bei Daniels Lösung muss man nicht in Menus rumklicken. Das ist nur bei der Erstellung hilfreich und sinnvoll. Im Grunde kannst du seinen Code direkt übernehmen. Schneller als dieser Code wird wohl keiner sein.
Gruß,
Helmut Win10 - Office365 / MacOS - Office365
04.08.2025, 20:09
(Dieser Beitrag wurde zuletzt bearbeitet: 04.08.2025, 20:16 von slowboarder.)
" Mit in der Menüleiste rumklicken, dafür sind die schon mal zu doof."
oder du zu faul, es ihnen vernünftig zu erklären. ![]() eine andere schnellere Methode habe ich dir doch gezeigt. JA man kann sie von Hand ausführen. Trotzdem kann man sie auch als Makro programmieren, womit der Endanwender dann genauso nur einen Button klicken muss, wie bei deinem Makro und man könnte sie noch weiter beschleunigen, in dem man die TB1 noch sortiert und dann denn SVerweis oder XVerweis mit der schnellen Variante (suchen in Sortierten Listen) anstelle des ZählenWenns verwendet um zu prüfen, ob der Wert vorhanden ist. Die schnelle Suche für Sortierte Listen findest du in Excel und VBA nur in diesen beiden Excelfunktionen bzw in der vereinfachten Variante mit dem S- oder XVergleich. Um deine Schleifenmethode zu beschleunigen, müsstest du dann schon etwas tiefer in VBA einsteigen (Arrays, Dictionary), dh der Code wir abstrakter und komplizierter, oder du schaust dir mal meine Methode genauer an. Gruß Daniel (04.08.2025, 20:02)HKindler schrieb: Hi,das stimmt nicht ganz. Wenn du bei sehr großen Datenmengen (so im 6-Stelligen Bereich) zur Kennzeichnung statt 0 und Zeilennummer einfach nur 1 und "" (Zahl und Text) verwendest, dann nochmal sortierst (vorher Formel durch Wert ersetzen) so dass die zu löschenden Zeilen einen lückenlosen Block bilden, den du als ganzes über SpecialCells selektieren kannst, dann geht das Löschen nochmal schneller. Außerdem habe ich jetzt noch keine Erfahrungswerte mit den neusten Excelversionen. Gruß Daniel
Es gibt nur folgende Probleme:
Die daten kommen alle aus SAP als .csv und werden importiert. Somit ist eigendlich Formeln einbauen nicht möglich. Also bleibt nur der Weg mit Makro.
04.08.2025, 20:53
(Dieser Beitrag wurde zuletzt bearbeitet: 04.08.2025, 20:54 von slowboarder.)
Naja, du importierst dir die CSV-Datei nach Excel
Somit ist es zumindest temporär eine Exceldatei und du kannst alle Excel- und VBA-Funktionen anwenden, auch Formeln. Außerdem ist die Formel ja nur während des Makrolaufs im Einsatz und wird am Ende wieder gelöscht. Deswegen ist es kein Problem, wenn das Makro Formeln verwendet. das einzige was du prüfen müsstet, ob Excel nach dem Duplikate-Entfernen den Datenbereich auch verkleinert hat (kannst du mit STRG+ENDE überprüfen, das springt zur letzten Zelle des Datenbereichs), wenn du das Ergebnis wieder als CSV speichern willst. wenn nicht, bekommst du viele Leerzeilen in die Datei. Aber wenn das passiert, kann man vorher auch was dagegen tun. Gruß Daniel
Ich bin schon froh, dass ich den jetzigen code zusammenbasteln konnte.
Aber die andere sache wird wohl meine Kenntnis übersteigen.
04.08.2025, 21:34
(Dieser Beitrag wurde zuletzt bearbeitet: 04.08.2025, 21:35 von slowboarder.)
naja, wenn das Einfügen einer einfachen Formel und das Anwenden einer Menüfunktion (mehr steckt ja nicht dahinter, beides übrigens zwei Aktionen, die du auch gut mit dem Recorder aufzeichnen kannst) dich schon überfordern, dann wirst du wohl bei deiner Methode bleiben müssen.
die lässt sich allerdings nicht beschleunigen, und wenn, dann mit Sachen die dich ganz sicher überfordern werden (Array, Dictionary), wenn du schon Probleme mit einfachen Excel-Standards hast. Gruß Daniel
05.08.2025, 11:11
Zitat:Ich bin schon froh, dass ich den jetzigen code zusammenbasteln konnte. Gerade dann, wenn man die Möglichkeiten von Excel noch nicht so gut kennt, ist es empfehlenswert anstatt eine aus dem Kontext isolierte Frage zu formulieren, lieber diesen zu erklären. Denn dies erhöht die Chance ungemein, insgesamt eine viel bessere Lösung zu erhalten. Hier der Hinweis, dass die Daten aus einem SAP-System kommen, lassen vermuten, dass der gesamte Prozess anders und besser gestaltet werden könnte. |
|