Supportnet / Forum / Tabellenkalkulation
Doppelte Zeilen löschen aber vorher auslesen???
Frage
Hallo zusammen,
ich hab ein kleines Excel-Problem:
Ich habe eine Tabelle mit ca. 10.000 Zeilen und 10 Spalten.
In Spalte A steht in jeder Zeile ein Text, z.B. XX.123 oder DA.546. In den Spalten B steht ein Teileanzahl, z.B. 5 oder 38 oder so.
Nun ist es so: Der Text in Spalte A kommt in mehreren Zeilen vor, aber die Nummer in Spalte B ist jedes Mal eine andere.
Mein Wunsch: Ich möchte von den Zeilen, die in A den gleichen Text haben, alle bis auf eine löschen. In der einzigen verbliebenen Zeile sollen die Zahlen aus Spalte B addiert werden.
Am Ende soll also pro unterschiedlichem Text nur eine Zeile da stehen, in der die Zahlen der Zeilen mit jeweils gleichem Text addiert werden.
Puh, ich hoffe, ihr wisst, was ich meine...
Das muss doch irgendwie gehen. Mit einem Makro vielleicht? (Von dem ich aber gar keine Ahnung habe).
Bitte helft mir! Ich brauche das für meinen Chef.
Danke schon mal, Gruß, Heiko1985
Antwort 1 von coros
Hallo Heiko,
mit nachfolgendem Makro sollte das machbar sein, was Du Dir vorstellst. Kopiere das Makro in ein StandardModul und starte es über eine Befehlsschaltfläche.
Mit dem Makro werden die Werte aus Spalte B mit den Werten aus Spalte B addiert, dessen Wert in Spalte A gleich sind. Die doppelt vorhandenen Einträge in Spalte A werden danach gelöscht.
Mache bitte von der Datei, in der Du das Makro einsetzen möchtest eine Kopie und arbeite zuerst mit der Kopie, damit wenn etwas schief geht, Du noch das Original hast.
Ich hoffe, Du hast das so gemeint und dass Du klar kommst. Wenn nicht, dann melde Dich bitte noch mal.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
mit nachfolgendem Makro sollte das machbar sein, was Du Dir vorstellst. Kopiere das Makro in ein StandardModul und starte es über eine Befehlsschaltfläche.
Option Explicit
Sub Löschen()
Dim Wiederholungen1 As Long, Wiederholungen2 As Long
Application.ScreenUpdating = False
For Wiederholungen1 = 2 To Range("A65536").End(xlUp).Row
For Wiederholungen2 = 2 To Range("A65536").End(xlUp).Row
If Wiederholungen1 <> Wiederholungen2 Then
If Cells(Wiederholungen1, 1) = Cells(Wiederholungen2, 1) Then
Cells(Wiederholungen1, 2) = Cells(Wiederholungen1, 2) + Cells(Wiederholungen2, 2)
Rows(Wiederholungen2).Delete
End If
End If
Next
Next
End Sub
Mit dem Makro werden die Werte aus Spalte B mit den Werten aus Spalte B addiert, dessen Wert in Spalte A gleich sind. Die doppelt vorhandenen Einträge in Spalte A werden danach gelöscht.
Mache bitte von der Datei, in der Du das Makro einsetzen möchtest eine Kopie und arbeite zuerst mit der Kopie, damit wenn etwas schief geht, Du noch das Original hast.
Ich hoffe, Du hast das so gemeint und dass Du klar kommst. Wenn nicht, dann melde Dich bitte noch mal.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 2 von Heiko1985
Hallo!
Vielen Dank!!! Hat super geklappt!
Leider bleiben vom obersten Ausdruck immernoch 2 Zeilen stehen. Kriegt man das auch noch irgendwie weg? Wär aber nicht schlimm, wenns nicht gehen sollte.
Ein ganz winziges Problem hab ich noch: Diesmal stehen die zu addierenden Werte nicht in Spalte B sondern z.B. in G. Wie krieg ich das hin? Muss ich in dem Makro, den du gepostet hast, einfach einen Wert ändern? Welchen?
Danke noch mal! Deine Internetseite ist super! Die kommt gleich zu meinen Favoriten!
Gruß, Heiko1985
Vielen Dank!!! Hat super geklappt!
Leider bleiben vom obersten Ausdruck immernoch 2 Zeilen stehen. Kriegt man das auch noch irgendwie weg? Wär aber nicht schlimm, wenns nicht gehen sollte.
Ein ganz winziges Problem hab ich noch: Diesmal stehen die zu addierenden Werte nicht in Spalte B sondern z.B. in G. Wie krieg ich das hin? Muss ich in dem Makro, den du gepostet hast, einfach einen Wert ändern? Welchen?
Danke noch mal! Deine Internetseite ist super! Die kommt gleich zu meinen Favoriten!
Gruß, Heiko1985
Antwort 3 von coros
Hallo Heiko,
das bei Dir zwei Zeilen unberührt bleiben liegt daran, dass ich davon ausgegangen bin, dass sich in Zeile 1 die Überschriften befinden. Wenn dem nicht so ist, ändere in den Zeilen
die Zahl 2 gegen eine 1. Dann sollte auch Zeile 1 mit geprüft werden.
Damit Deine Werte in Spalte E addiert werden musst Du in der Zeile
die Zahl 2 gegen eine 7 ändern. Wenn Du eine andere Spalte addieren möchtest, musst Du wieder die Spaltenindexzahl ändern. Dabei steht eine 1 für Spalte A, eine 2 für Spalte B, eine 3 für Spalte C, die 7 für Spalte G usw.
Somit sieht dann der ganze Code für das addieren von Spalte G folgendermaßen aus:
Ich hoffe, Du kommst klar. Bei Fragen melde Dich wieder.
Danke auch für das Lob bezüglich der Homepage.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
das bei Dir zwei Zeilen unberührt bleiben liegt daran, dass ich davon ausgegangen bin, dass sich in Zeile 1 die Überschriften befinden. Wenn dem nicht so ist, ändere in den Zeilen
For Wiederholungen1 = 2 To Range("A65536").End(xlUp).Row
For Wiederholungen2 = 2 To Range("A65536").End(xlUp).Row
die Zahl 2 gegen eine 1. Dann sollte auch Zeile 1 mit geprüft werden.
Damit Deine Werte in Spalte E addiert werden musst Du in der Zeile
Cells(Wiederholungen1, 2) = Cells(Wiederholungen1, 2) + Cells(Wiederholungen2, 2)die Zahl 2 gegen eine 7 ändern. Wenn Du eine andere Spalte addieren möchtest, musst Du wieder die Spaltenindexzahl ändern. Dabei steht eine 1 für Spalte A, eine 2 für Spalte B, eine 3 für Spalte C, die 7 für Spalte G usw.
Somit sieht dann der ganze Code für das addieren von Spalte G folgendermaßen aus:
Option Explicit
Sub Löschen()
Dim Wiederholungen1 As Long, Wiederholungen2 As Long
Application.ScreenUpdating = False
For Wiederholungen1 = 1 To Range("G65536").End(xlUp).Row
For Wiederholungen2 = 1 To Range("G65536").End(xlUp).Row
If Wiederholungen1 <> Wiederholungen2 Then
If Cells(Wiederholungen1, 1) = Cells(Wiederholungen2, 1) Then
Cells(Wiederholungen1, 7) = Cells(Wiederholungen1, 7) + Cells(Wiederholungen2, 7)
Rows(Wiederholungen2).Delete
End If
End If
Next
Next
End Sub
Ich hoffe, Du kommst klar. Bei Fragen melde Dich wieder.
Danke auch für das Lob bezüglich der Homepage.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 4 von Heiko1985
Hallo!
Hab den Makro umgeschrieben, wie du gesagt hast. Und jetzt klappt er ganz hervorragend! Hat meine Wünsche zu 100% erfüllt. :)
Vielen Dank noch mal für deine Hilfe!!!! Gruß, Heiko1985
Hab den Makro umgeschrieben, wie du gesagt hast. Und jetzt klappt er ganz hervorragend! Hat meine Wünsche zu 100% erfüllt. :)
Vielen Dank noch mal für deine Hilfe!!!! Gruß, Heiko1985

