Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1512to1516
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige