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

Forumthread: Zeilennummer beim Löschen behalten

Zeilennummer beim Löschen behalten
02.09.2016 18:36:13
Tom
Excelzeilen löschen ohne das die Zeilennummern verloren geht.
Hallo zusammen
ich benötige Hilfe um farbige Zeilen zu löschen , aber die Zeilennummer darf nicht verändert werden. Also soll nach dem Löschen nicht die Nummerierung der Excelanzeige angepasst werden.
Ich habe Werte in den zu löschenen Zeilen und habe von Nepumuk nachfoldendes Makro verwendet. Public Sub Karin() Dim lng_Row As Long Application.ScreenUpdating = False For lng_Row = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1 If Cells(lng_Row, 1).Interior.ColorIndex = 1 Then Rows(lng_Row).Delete Shift:=xlShiftUp Next Application.ScreenUpdating = True End Sub
Das Löschen klappt, aber leider wird die Nummerierung mit verändert-(die ganz links außerhalb der Spalte A ist)
Im Voraus vielen Dank für eure Bemühungen.
Gruß Tom
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilennummer beim Löschen behalten
02.09.2016 19:00:27
fcs
Hallo Tom (oder evtl. doch Karin)
in deinem Fall darfst du dann nicht die kompletten Zellen löschen sondern nur die Inhalte.
Gruß
Franz
Etwa so:
Public Sub Karin()
Dim lng_Row As Long
Dim wks As Worksheet
Application.ScreenUpdating = False
Set wks = ActiveSheet
With wks
For lng_Row = .Cells(.Rows.Count, 1).End(xlUp).Row To 1 Step -1
If .Cells(lng_Row, 1).Interior.ColorIndex = 1 Then
'Inhalt in ganzer Zeile löschen
'.Rows(lng_Row).ClearContents
.Cells(lng_Row, 1).Interior.ColorIndex = xlColorIndexNone
'Inhalt in bestimmten Spalten löschen. Hier: B bis I (2 bis 10)
.Range(.Cells(lng_Row, 2), .Cells(lng_Row, 10)).ClearContents
End If
Next
End With
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Zeilennummer beim Löschen behalten
02.09.2016 20:16:02
Tom
Vielen Dank Franz,
für die Unterstützung.
Das markro läuft nun seit 30 min...
Das Ergebnis soll aber eine Liste sein wo nicht gelöschten Einträge untereinander stehen und die zeilennummern beibehalten werden. Nur dann kann der gefütterte Computer das verarbeiten.
Habe es immer händisch gelöscht, was bei mehreren 100.000 zeilen aber sehr zeitaufwendig war.
Ich weiß nicht ob es eine Rolle spielt- im Ursprung was das eine csv. datei.
Anzeige
AW: Zeilennummer beim Löschen behalten
02.09.2016 20:30:33
Tom
Markro ist ohne Wirkung durchgelaufen.
der Grundgedanke ist wahrscheinlich richtig, nur den inhalt zu löschen.
@ FRanz , habe ich einen Fehler gemacht oder hat das Macro einen bug?
Und
Ich habe die zu löschenden schwarz markiert, was muß ich ändern im Makro das ich die ungefärbten lösche?
Aber vielen Dank für die hilfe.
(händisch löschen entfernt auch die Zeilennummern- war falsch von mir)
Anzeige
AW: Zeilennummer beim Löschen behalten
03.09.2016 05:06:08
fcs
Hallo Tom,
das Makro funktioniert.
bei über 100000 Zeilen frisst dann irgendwann die Masse Zeit.
Die extrem lange Laufzeit kann zustande kommen, wenn in der Tabelle Formeln vorhanden sind insbesondere solche die Daten aus Zellbereichen mit vielen Zeilen verarbeiten, deren Inhalte gelöscht werden.
Dann versucht Excel dauernd das Tabellenblatt neu zu berechnen.
Auch das Entfernen der Zellfarbe bei jeder einzelnen schwarzen Zelle frisst Zeit.
Ich hab deshalb das Makro noch etwas optimiert und die Berechnung während der Makro-Ausführung auf "mauell" gesetzt.
Das Entfernen der schwarzen Füllfarbe erfolgt dann für die komplette Spalte am Schluss.
Wenn nur in den nicht-schwarzen Zeilen gelöscht werden sol, dann muss in der If-Prüfung das "=" durch "&lt&gt" ersetzt werden.
Frage: Wie färbst du denn die Zellen in Spalte A schwarz? Mit Füllfarbe in schwarz ändern oder per bedingter Formatierung?
Wenn bedingte Formatierung, dann funktioniert das Makro nicht.
Eine andere schnelle manuelle Methode (sollte auch unter Excel 2007 schon funktionieren) wäre manuell via Autofilter. Diese funktioniert auch bei Farben via bedingter Formatierung.
  • 1. Markiere alle Zellen mit Daten im Tabellenblatt

  • 2. Aktiviere via Menü "Daten" den Autofilter (Symbol "Filtern" (Trichter) anklicken).
    In der 1. Zeile werden jetzt Drop-Down-Auswahl-Pfeile angezeigt.

  • 3. Klicke in Spalte A auf den Pfeil und wähle "nach Farbe filtern" und dann die Farbe für die Zeilen, deren Inhalte du löschen möchtest.

  • 4. markiere die Zellen, deren Inhalte gelöscht werden sollen und dann lösche
    Es werden dann nur die Inhalte der sichtbaren Zellen gelöscht.

  • 5. Deaktiviere via Menü "Daten" den Autofilter wieder durch erneutes anklicken)

  • Gruß
    Franz
    Public Sub Karin_loeschen_schwarze()
    Dim lng_Row As Long
    Dim StatusCalc As Long
    Dim wks As Worksheet
    With Application
    .ScreenUpdating = False
    StatusCalc = .Calculation
    .Calculation = xlCalculationManual
    End With
    Set wks = ActiveSheet
    With wks
    For lng_Row = .Cells(.Rows.Count, 1).End(xlUp).Row To 1 Step -1
    If .Cells(lng_Row, 1).Interior.ColorIndex = 1 Then
    'Inhalt in ganzer Zeile löschen
    '.Rows(lng_Row).ClearContents
    'Inhalt in bestimmten Spalten löschen. Hier: B bis I (2 bis 10)
    .Range(.Cells(lng_Row, 2), .Cells(lng_Row, 10)).ClearContents
    End If
    Next
    .Columns(1).Interior.ColorIndex = xlColorIndexNone
    End With
    With Application
    .ScreenUpdating = True
    .Calculation = StatusCalc
    End With
    End Sub
    Public Sub Karin_loeschen_nicht_schwarze()
    Dim lng_Row As Long
    Dim StatusCalc As Long
    Dim wks As Worksheet
    With Application
    .ScreenUpdating = False
    StatusCalc = .Calculation
    .Calculation = xlCalculationManual
    End With
    Set wks = ActiveSheet
    With wks
    For lng_Row = .Cells(.Rows.Count, 1).End(xlUp).Row To 1 Step -1
    If .Cells(lng_Row, 1).Interior.ColorIndex  1 Then
    'Inhalt in ganzer Zeile löschen
    '.Rows(lng_Row).ClearContents
    'Inhalt in bestimmten Spalten löschen. Hier: B bis I (2 bis 10)
    .Range(.Cells(lng_Row, 2), .Cells(lng_Row, 10)).ClearContents
    End If
    Next
    .Columns(1).Interior.ColorIndex = xlColorIndexNone
    End With
    With Application
    .ScreenUpdating = True
    .Calculation = StatusCalc
    End With
    End Sub
    

    Anzeige
    ;
    Anzeige
    Anzeige

    Infobox / Tutorial

    Zeilennummern beim Löschen in Excel beibehalten


    Schritt-für-Schritt-Anleitung

    Um in Excel Zeilen zu löschen, ohne dass die Zeilennummern verändert werden, kannst du ein VBA-Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

    1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

    2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.

    3. Kopiere und füge das folgende Makro ein:

      Public Sub ZeilenLoeschen()
         Dim lng_Row As Long
         Application.ScreenUpdating = False
         For lng_Row = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
             If Cells(lng_Row, 1).Interior.ColorIndex = 1 Then
                 Rows(lng_Row).ClearContents
             End If
         Next
         Application.ScreenUpdating = True
      End Sub
    4. Färbe die Zeilen, die du löschen möchtest, in der ersten Spalte schwarz.

    5. Schließe den VBA-Editor und kehre zu Excel zurück.

    6. Drücke ALT + F8, wähle ZeilenLoeschen und klicke auf Ausführen.

    Das Makro löscht nur den Inhalt der markierten Zeilen und lässt die Zeilennummern unverändert.


    Häufige Fehler und Lösungen

    • Excel-Zeile kann nicht gelöscht werden: Stelle sicher, dass die Zeilen, die du löschen möchtest, nicht durch Formeln oder bedingte Formatierungen geschützt sind.
    • Excel-Zeile nicht löschbar: Überprüfe, ob die Arbeitsmappe möglicherweise schreibgeschützt ist oder ob du die richtigen Berechtigungen hast.
    • Zellen löschen grau hinterlegt: Dies kann daran liegen, dass die Zellen durch eine bedingte Formatierung eingefärbt sind. Stelle sicher, dass deine Zellfarbe nicht durch Bedingungen gesetzt wird, die das Makro nicht erkennt.

    Alternative Methoden

    Wenn du kein Makro verwenden möchtest, kannst du den Autofilter in Excel nutzen:

    1. Markiere alle Daten im Tabellenblatt.
    2. Aktiviere den Autofilter über das Menü Daten > Filtern.
    3. Klicke auf den Filter in der ersten Zeile der Spalte, in der du die Farben filtern möchtest.
    4. Wähle Nach Farbe filtern und wähle die Farbe, die du löschen möchtest.
    5. Markiere die gefilterten Zellen und lösche die Inhalte.
    6. Deaktiviere den Autofilter.

    Diese Methode funktioniert auch bei bedingter Formatierung.


    Praktische Beispiele

    Hier sind zwei praktische Beispiele für Makros, die du verwenden kannst:

    1. Inhalt von schwarzen Zeilen löschen:

      Public Sub LoeschenSchwarz()
         Dim lng_Row As Long
         Application.ScreenUpdating = False
         For lng_Row = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
             If Cells(lng_Row, 1).Interior.ColorIndex = 1 Then
                 Range(Cells(lng_Row, 2), Cells(lng_Row, 10)).ClearContents
             End If
         Next
         Application.ScreenUpdating = True
      End Sub
    2. Inhalt von nicht-schwarzen Zeilen löschen:

      Public Sub LoeschenNichtSchwarz()
         Dim lng_Row As Long
         Application.ScreenUpdating = False
         For lng_Row = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
             If Cells(lng_Row, 1).Interior.ColorIndex <> 1 Then
                 Range(Cells(lng_Row, 2), Cells(lng_Row, 10)).ClearContents
             End If
         Next
         Application.ScreenUpdating = True
      End Sub

    Tipps für Profis

    • Makros optimieren: Setze die Berechnung während der Makro-Ausführung auf xlCalculationManual, um die Leistung zu steigern, insbesondere bei großen Datenmengen.
    • Verwende das Namenfeld in Excel: Wenn du oft bestimmte Zellbereiche löschst, kannst du diese im Namenfeld speichern, um sie schneller zu erreichen.
    • Testen in einer Kopie: Probiere neue Makros immer zuerst in einer Kopie deiner Datei aus, um Datenverlust zu vermeiden.

    FAQ: Häufige Fragen

    1. Wie kann ich das Namenfeld in Excel löschen?
    Du kannst das Namenfeld einfach auswählen und auf Löschen drücken, um es zu entfernen.

    2. Was passiert, wenn ich Zellen löschte und die Zeilennummern sich ändern?
    Wenn du ganze Zeilen löschst, werden die Zeilennummern automatisch aktualisiert. Um dies zu verhindern, muss der Inhalt gelöscht werden, nicht die Zeilen selbst.

    3. Wie kann ich sicherstellen, dass meine Zellen nicht grau hinterlegt sind?
    Überprüfe die bedingte Formatierung und entferne sie gegebenenfalls, um sicherzustellen, dass die Farben nicht automatisch gesetzt werden.

    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