Doppelte Zeilen finden und Spalten löschen

wobeni

Grünschnabel
Hallo,

ich habe die folgende Anforderung.
In einer Excel Tabelle existieren z.B. Zeilen, die innerhalb der Spalte B ( Name1) den gleichen Eintrag haben. Nun sollen diese doppelten Zeilen / Spalten gefunden werden und innerhalb dieser lediglich bestimmte Spalten ( z.B. Spalte A - E gelöscht werden )

Nachfolgend ein Beispiel:
Tabelle-1:
ID Name1 Name2 PLZ Ort Name3 Funktion
1 Müller Max 12345 Müllerhausen Mustermann Inhaber
1 Müller Max 12345 Müllerhausen Schmitt Geschäftsführer
1 Müller Max 12345 Müllerhausen Wagner Gesellschafter
2 Schmitt Willi 45678 Schmitten Mayer Inhaber

Die gewünschte Ausgabe sollte wie folgt sein:
ID Name1 Name2 PLZ Ort Name3 Funktion
1 Müller Max 12345 Müllerhausen Mustermann Inhaber
hier sollen lediglich die Spalten A-E gelöscht werden Schmitt Geschäftsführer
hier sollen lediglich die Spalten A-E gelöscht werden Wagner Gesellschafter
2 Schmitt Willi 45678 Schmitten Mayer Inhaber


Wie kann man das innerhalb eines Excel Makros umsetzen.

Vielen Dank im vorraus
 
Visual Basic:
Sub Irgendwas
Dim i as Long
Dim j as long
Dim IstGleich as Boolean

For i=LetzteZeile to 2 Step-1   'LetzteZeile muss hier angepasst werden

    IstGleich=Tabelle1.Cells(i,1)=Tabelle1.Cells(i-1,1) And Tabelle1.Cells(i,2)=Tabelle1.Cells(i-1,2) And Tabelle1.Cells(i,3)=Tabelle1.Cells(i-1,3) And Tabelle1.Cells(i,4)=Tabelle1.Cells(i-1,4) And Tabelle1.Cells(i,5)=Tabelle1.Cells(i-1,5)

    If IstGleich Then
        
        For j=5 to 1 Step-1

            Tabelle1.Cells(i,j).Delete Shift:=xlShiftToLeft

        Next

    End If

Next

End Sub
 
Hallo,

vielen Dank für die schnelle Hilfe.
Eine Sache habe ich allerdings noch. Nachdem Löschen der ersten X Spalten in den doppelten Zeilen verschiebt er die Inhalte der letzten beiden Spalten nach vorne in die Spalte
ID und Name1. Diese sollten allerdings in den letzten beiden Spalten Name3 und Funktion stehen bleiben. Kann man dies auch noch über das Makro erreichen.

ID Name1 Name2 PLZ Ort Name3 Funktion
1 Müller Max 12345 Müllerhausen Mustermann Inhaber
Schmitt Geschäftsführer
Wagner Gesellschafter
2 Schmitt Willi 45678 Schmitten Mayer Inhaber

Vielen Dank
 
Zeile 12 bis 16 aus obigem Code durch folgendes ersetzen:
Visual Basic:
For j=5 to 1 Step-1

    Tabelle1.Cells(i,j)=""

Next
 
Hallo,

vielen Dank, klappt prima.

Allerdings bekomme ich ab einer Zeilenanzahl von 3000
For i = 3000 To 2 Step -1 'LetzteZeile muss hier angepasst werden

folgende VB Fehlermeldung: Laufzeitfehler 13, Typen unverträglich
 
Hallo,

zunächst erscheint das normale Fenster mit der angegebenen Meldung.
Wählt man dort "Debuggen" aus wird die folgende Zeile als Fehler angezeigt.


IstGleich = Tabelle1.Cells(i, 1) = Tabelle1.Cells(i - 1, 1) And Tabelle1.Cells(i, 2) = Tabelle1.Cells(i - 1, 2) And Tabelle1.Cells(i, 3) = Tabelle1.Cells(i - 1, 3) And Tabelle1.Cells(i, 4) = Tabelle1.Cells(i - 1, 4) And Tabelle1.Cells(i, 5) = Tabelle1.Cells(i - 1, 5)

Es handelt sich bei der Excel Tabelle um ca. 14.000 Zeilen.
 
Seltsam.

Kannst du mal die Zeile veröffentlichen, für welche die Fehlermeldung kommt?

Die Zeile findest du in der Variablen i.
Veröffentliche mal den Inhalt der Zeile i und der Zeile davor (i-1), vor allem die Werte welche in Spalte A bis E stehen.

Bsp.: Fehler tritt auf, "Debuggen" clicken, "IstGleich=usw." ist markiert, i hat den Wert 2946 (Ist jetzt nur ein Beispiel)

Also Zeile 2946 und Zeile 2945 die Werte aus den zellen A bis E mal hier reinschreiben.

Weil ich konnte das Problem bei mir nicht nachvollziehen.
Fehler 13 ist meistens ein Hinweis, dass man versucht einen Textwert in eine Zahlenvariable zu klopfen bzw. einen Textwert in eine Zahl umzuwandeln.
 
Hallo,

das Thema hat sich erledigt. In der Spalte wo er sich aufhängte,
standen falsche Werte, welche das Makro nicht verarbeiten konnte.

Nach der Korrektur dieser Werte, lief alles einwandfrei.

Vielen Dank nochmal
 

Neue Beiträge

Zurück