# Doppelte Zeilen finden und Spalten löschen



## wobeni (8. September 2008)

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


----------



## Zvoni (9. September 2008)

```
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
```


----------



## wobeni (9. September 2008)

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


----------



## Zvoni (9. September 2008)

Zeile 12 bis 16 aus obigem Code durch folgendes ersetzen:

```
For j=5 to 1 Step-1

    Tabelle1.Cells(i,j)=""

Next
```


----------



## wobeni (9. September 2008)

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


----------



## Zvoni (9. September 2008)

Kommt der Fehler direkt in der For i=3000 Zeile vor?


----------



## wobeni (9. September 2008)

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.


----------



## Zvoni (9. September 2008)

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.


----------



## wobeni (11. September 2008)

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


----------

