Supportnet Computer
Planet of Tech

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.

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

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

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

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: