Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zeile löschen wenn 1. Zelle bestimmte Farbe

Zeile löschen wenn 1. Zelle bestimmte Farbe
30.08.2004 17:58:11
k.reffert
Guten Tag, zusammen, versuche mich im Selbsstudium an VBA und beisse mir noch an kleinsten Dingen die Zähne aus...:
im aktiven Worksheet möchte ich jene Zeilen löschen, deren 1. Zelle (also in Spalte A) schwarz ist [die farbigen Markierungen in Spalte A dienten der Gliederung].
Irgendwie muß ich wohl Cells.Interior.ColorIndex=1 unterbringen, aber wie kriege ich genau diese Zellen selektiert?
Da die betreffenden Zeilen ja nicht aufeinander folgen, sondern an beliebiger Stelle stehen können, muß da sicher auch noch 'ne Schleife rein, weil VBA ja solange die Deletion wiederholen soll, bis keine Zeilen mehr beginnend mit schwarzer Zelle vorhanden sind?
Für eure Hilfe an mich Laien vielen Dank im Voraus.
PS: Habe das Archiv durchforstet, hoffentlich nichts übersehen, das mir jetzt Schelte einbringt ;-)
Gruss,
Karin
Anzeige
AW: Zeile löschen wenn 1. Zelle bestimmte Farbe
Uduuh
Hallo,
als Grundsatz: Löschen immer von unten.

Sub schwarz_weg()
Dim iRow As Integer
Application.ScreenUpdating = False
For iRow = Cells(65536, 1).End(xlUp).Row To 1 Step -1
If Cells(iRow, 1).Interior.ColorIndex = 1 Then
Rows(iRow).EntireRow.Delete shift:=xlUp
End If
Next iRow
Application.ScreenUpdating = True
End Sub

Gruß aus'm Pott
Udo
Anzeige
AW: Zeile löschen wenn 1. Zelle bestimmte Farbe
30.08.2004 18:08:00
Nepumuk
Hallo Udo,
"Dim iRow As Integer" ? Gefährlich bei 65536 Zeilen. :-)
Gruß
Nepumuk
AW: Zeile löschen wenn 1. Zelle bestimmte Farbe
Uduuh
Hallo Nepomuk,
OK, Long wäre sicherer.
Gruß aus'm Pott
Udo
AW: Zeile löschen wenn 1. Zelle bestimmte Farbe
k.reffert
Das war fix, Udo, vielen Dank!!!
Leider tut sich damit nix; irre ich mich vielleicht bzgl. der Farbe, könnte es auch "Automatisch" sein, welcher ColorIndex wäre das dann?
Dank auch für den Hinweis die Suche resp. das Löschen immer von unten anzufangen...
Gruss,
Karin
Anzeige
AW: Zeile löschen wenn 1. Zelle bestimmte Farbe
30.08.2004 18:06:31
Nepumuk
Hallo Karin,
so geht's:


Public Sub Karin()
    Dim lng_Row As Long
    Application.ScreenUpdating = False
    For lng_Row = Rows.Count To Step -1
        If Cells(lng_Row, 1).Interior.ColorIndex = 1 Then Rows(lng_Row).Delete Shift:=xlShiftUp
    Next
    Application.ScreenUpdating = True
End Sub


Da du nicht schreibst, ob sich in den Zellen auser Farbe noch Werte befinden, muss die komplette Spalte dursucht werden. Sin aber Werte drin, dann so:


Public Sub Karin()
    Dim lng_Row As Long
    Application.ScreenUpdating = False
    For lng_Row = Cells(Rows.Count, 1).End(xlUp).Row To Step -1
        If Cells(lng_Row, 1).Interior.ColorIndex = 1 Then Rows(lng_Row).Delete Shift:=xlShiftUp
    Next
    Application.ScreenUpdating = True
End Sub


Gruß
Nepumuk
Anzeige
AW: Zeile löschen wenn 1. Zelle bestimmte Farbe
Beni
Hallo Karin,
das ist alles was Du braucht.
Grus Beni

Sub Zeile_löschen_wenn_schwarz()
For i = 1 To Cells(65536, 1).End(xlUp).Row
If Cells(i, 1).Interior.ColorIndex = 1 Then Cells(i, 1).Delete Shift:=xlUp
Next i
End Sub

AW: Zeile löschen wenn 1. Zelle bestimmte Farbe
k.reffert
Wow! Die Lösung von Nepomuk war's... 126 Zeilen auf einen Schlag gelöscht, super!!!
(Nein, Nemo, in den Zellen waren nur Hintergründe, keine Werte)
Euch allen herzlichen Dank für diesen prompten Service...
Karin-die-euch-sicher-noch-öfters-belästigen-wird
;-)
Anzeige
AW: Zeile löschen wenn 1. Zelle bestimmte Farbe
31.08.2004 19:42:36
k.reffert
... und da ist sie auch schon wieder.
Wie, Ihr lieben Profis, sage ich meinem Excel/VBA, daß es alle Zeilen (vom Sheet-Ende beginnend, logo...) löschen soll,
wo in Spalte 1 (Zelle A) die Hintergrundfarbe 22 ist UND
wo in Spalte 2 (Zelle B) nix, also weder Wert noch Formel steht?
(Es sollen auf keinen Fall alle Zeilen beginnend mit Schweinchen-rosa Zelle gelöscht werden, eben nur solche, wo in der 2. Spalte nix drinsteht...)
Hilft mir da WITH weiter?
Wie werden mehrere Bedingungen formuliert, die erfüllt sein müssen, um die nächste Action auszuführen? IF in der IF-Anweisung?
Hilfe herzlich willkommen, 1000 Dank vorab.
Karin
Anzeige
AW: Zeile löschen wenn 1. Zelle bestimmte Farbe
31.08.2004 19:56:20
Nepumuk
Hallo Karin,
alles in eine Abfrage:


Public Sub Karin()
    Dim lng_Row As Long
    Application.ScreenUpdating = False
    For lng_Row = Rows.Count To Step -1
        If Cells(lng_Row, 1).Interior.ColorIndex = 22 And Trim(Cells(lng_Row, 2).Value) = "" And Not Cells(lng_Row, 2).HasFormula Then Rows(lng_Row).Delete Shift:=xlShiftUp
    Next
    Application.ScreenUpdating = True
End Sub


Gruß
Nepumuk
Anzeige
AW: Zeile löschen wenn 1. Zelle bestimmte Farbe
k.reffert
Nepomuk, wie schaffst du das so schnell?
Außer dem "Trim", das ich gleich mal nachlesen werde, scheint mir die IF-Anweisung strikt logisch, aber selber drauf kommen? Da muß ich wohl noch lange üben...
Die Prozedur erzielt genau das gewünschte Ergebnis, also herzlichen Dank!!!
Karin-die-usw...
Anzeige
AW: Zeile löschen wenn 1. Zelle bestimmte Farbe
31.08.2004 22:39:49
Nepumuk
Hallo Karin,
ich schreibe seit über 25 Jahren Computerprogramme. Da lernt man/frau es langsam. :-)
Gruß
Nepumuk (tatsächlich mit u an Stelle von o)
AW: Zeile löschen wenn 1. Zelle bestimmte Farbe
02.09.2004 19:58:41
k.reffert
Hallo, Nepumuk, (jetzt hat sie's!!!)
na, du machst mir Mut.... In 25 Jahren bin ich längst in Rente! Weiss allerdings noch nicht, ob ich das hoffen oder fürchten soll ;-)
Erlaubst du eine persönliche Frage? Bist du Vollzeit-Programmierer? Das ist m. W. ein Berufsbild, nicht? Wie wird man das? Sind VBA'ler stets Autodidakten oder wird sowas nicht auch an der Uni als "Informatik" o. ä. gelehrt? Wächst man da von Basic über Basica über GWBasic und was-sonst-noch-dazwischen-liegen-mag einfach hinein? Antwort gerne via email; falls du's zu persönlich findest, auch i. O.
Jedenfalls Dank nochmals für die Hilfe, hab' schon wieder ein neues Problem, da werd' ich gleichmal das Archiv durchforsten...
Schönen Abend noch,
Karin-die-Unwissende
Anzeige
AW: Zeile löschen wenn 1. Zelle bestimmte Farbe
02.09.2004 20:14:42
Nepumuk
Hallo Karin,
nein, ich habe das an den Nagel gehängt, das war mir zu eintönig. Ich mache das nur noch um geistig fit zu bleiben. Angefangen habe ich mit Assembler und RPG2 dann kam Fortran und Cobo,l anschließend HP-Business-Basic. VBA habe ich vor etwas mehr als 10 Jahren angefangen, da ich gewisse Routinearbeiten besser den Computer machen lasse. Das mache ich zwar immer noch, aber meistens zu Hause, da ich wärend meiner Arbeitszeit zu oft gestört werde. Ich mache Personalplanung für Electrolux Europe, da besteht die Arbeit zu 99% aus Kommunikation. Das macht mehr Spaß.
Wenn du schell VBA lernen willst, dann schau die Beiträge im Forum an. Du findest kein Lehrbuch, welches diese Fülle an Informationen bietet.
Gruß
Nepumuk
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zeilen löschen, wenn die erste Zelle eine bestimmte Farbe hat


Schritt-für-Schritt-Anleitung

Um in Excel alle Zeilen zu löschen, bei denen die erste Zelle in Spalte A eine bestimmte Farbe hat, kannst Du den folgenden VBA-Code verwenden. Dieser Code überprüft die Hintergrundfarbe der Zellen und löscht die Zeilen entsprechend:

Sub schwarz_weg()
    Dim iRow As Long
    Application.ScreenUpdating = False
    For iRow = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
        If Cells(iRow, 1).Interior.ColorIndex = 1 Then
            Rows(iRow).EntireRow.Delete Shift:=xlUp
        End If
    Next iRow
    Application.ScreenUpdating = True
End Sub
  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu, indem Du im Menü "Einfügen" auf "Modul" klickst.
  3. Kopiere den obigen Code in das Modul.
  4. Schließe den VBA-Editor und kehre zu Excel zurück.
  5. Führe das Makro über ALT + F8 aus und wähle schwarz_weg aus.

Häufige Fehler und Lösungen

  • Fehler: Das Makro löscht keine Zeilen.

    • Lösung: Überprüfe, ob die richtige ColorIndex-Nummer verwendet wird. Für Schwarz ist der ColorIndex 1.
  • Fehler: Das Programm löscht nicht alle erforderlichen Zeilen.

    • Lösung: Achte darauf, dass Du von unten nach oben durch die Zeilen iterierst, um Probleme beim Löschen zu vermeiden.

Alternative Methoden

Falls Du keine VBA-Programmierung verwenden möchtest, kannst Du auch Filter nutzen:

  1. Markiere die gesamte Tabelle.
  2. Gehe zu "Daten" und wähle "Filter".
  3. Filtere nach der gewünschten Zellfarbe in Spalte A.
  4. Markiere die gefilterten Zeilen und lösche sie.

Diese Methode ist effektiv, wenn Du nur gelegentlich bestimmte Zeilen löschen musst.


Praktische Beispiele

  1. Löschen aller Zeilen mit schwarzer Hintergrundfarbe in Spalte A: Verwende den oben genannten VBA-Code.

  2. Löschen aller Zeilen, wo die erste Zelle die Hintergrundfarbe 22 hat und die zweite Zelle leer ist:

    Sub ZeilenLöschen()
       Dim lng_Row As Long
       Application.ScreenUpdating = False
       For lng_Row = Rows.Count To 1 Step -1
           If Cells(lng_Row, 1).Interior.ColorIndex = 22 And Trim(Cells(lng_Row, 2).Value) = "" Then
               Rows(lng_Row).Delete Shift:=xlUp
           End If
       Next
       Application.ScreenUpdating = True
    End Sub

Tipps für Profis

  • Farbe entfernen: Um die Hintergrundfarbe einer Zelle zu entfernen, kannst Du den folgenden Code verwenden:

    Cells(iRow, 1).Interior.ColorIndex = xlNone
  • Optimierung: Verwende Application.Calculation = xlCalculationManual, um die Berechnung während des Löschvorgangs zu deaktivieren und die Geschwindigkeit zu erhöhen.


FAQ: Häufige Fragen

1. Wie kann ich alle Zeilen löschen, die eine bestimmte Farbe in einer anderen Spalte haben? Du musst den VBA-Code so anpassen, dass er die Bedingungen für die andere Spalte überprüft.

2. Was ist der Unterschied zwischen Interior.ColorIndex und Interior.Color? ColorIndex verwendet eine indexbasierte Farbpalette, während Color die RGB-Farbe verwendet.

3. Wie kann ich die gesamte Zeile löschen, wenn nur eine Zelle in der Zeile eine bestimmte Farbe hat? Der Code muss so angepasst werden, dass er die Farbe der gewünschten Zelle überprüft, bevor die gesamte Zeile gelöscht wird.

Mit diesen Anleitungen und Tipps kannst Du bestimmte Zeilen in Excel effizient löschen, je nach Hintergrundfarbe der Zellen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige