Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1088to1092
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

Zeilen in bestimmten Bereichen löschen

Zeilen in bestimmten Bereichen löschen
Kaiser
Hallo
Auf einem Tabellenblatt befinden sich 4 Hauptbereiche. In der im Anhang befindlichen Datei in Spalte A mit A C E G gekennzeichnet. Nun möchte ich, dass in jedem Bereich alle Zeilen die nach der 20. Zeile (im Bereich) eingetragen sind gelöscht werden. Im Anhang mit Schriftfarbe rot markiert. Die Anzahl der Zeilen in allen Bereichen kann aber variieren. Es können also im Bereich mal 100 Zeilen vorhanden sein oder auch nur 10. Sollten es aber über 20 sein sollte incl. der 21 Zeile bis zum nächsten Bereich alles gelöscht werden. Sind es nur 10 Zeilen sein, sollten diese beibehalten werden.
Mit Formatierung oder Suche nach bestimmten Zeichen funktioniert es nicht, da in der Originaltabelle die Formatierungen gleich sind und auch unterschiedlicher Text in den Zellen stehen kann.
Ein Anhaltspunkt wäre vielleicht die Spalte A. Die Einträge dort "A C E G" sind immer gleich.
https://www.herber.de/bbs/user/63284.xls
Ich hoffe Ihr könnt mir da weiterhelfen
MfG Jörg Kaiser
AW: Zeilen in bestimmten Bereichen löschen
19.07.2009 19:35:36
Tino
Hallo,
versuche es mal hiermit, erstelle einen Namen mit der
Formel =ZELLE.ZUORDNEN(24;'Sheet1 (4)'!D1) und den Namen Farbe
In einem Modul führst Du dieses Makro aus.
Sub Loesche_Rote()
Dim Bereich As Range, iCalc As Integer
Set Bereich = ActiveSheet.UsedRange

With Application
 iCalc = .Calculation
 .EnableEvents = False
 .ScreenUpdating = False
 .Calculation = xlCalculationManual

        With Bereich.Offset(0, 1).Columns(Bereich.Columns.Count)
         .Formula = "=IF(Farbe=3,TRUE,ROW())"
         ActiveSheet.UsedRange.Sort .Cells(1, 1), xlAscending, , , , , , xlNo
         On Error Resume Next
         .SpecialCells(xlCellTypeFormulas, 4).EntireRow.Delete
         On Error GoTo 0
         .EntireColumn.Delete
        End With

 .EnableEvents = True
 .ScreenUpdating = True
 .Calculation = iCalc
End With
End Sub

Gruß Tino
Anzeige
AW: Zeilen in bestimmten Bereichen löschen
19.07.2009 21:00:40
Kaiser
Hallo Tino
Erst mal Danke für die schnelle Hilfe.
Hab es gerade probiert, bekomme es aber nicht hin. Über Einfügen- Namen - Definieren - Name der Arbeitsmappe " Farbe" bezieht sich auf: =ZELLE.ZUORDNEN(24;'Sheet1 (4)'!D1) eingegeben.
Marko in ein Modul eingetragen, aber es funzt nicht?
Frägst Du mit IF(Farbe=3,TRUE,ROW ..... die rote Schriftfarbe ab? Oder sehe ich das Falsch?
Die rote Schrift habe ich in der hochgeladenen Datei nur zur besseren Veranschaulichung gewählt.
Im 1. Posting hatte ich geschrieben"Mit Formatierung oder Suche nach bestimmten Zeichen funktioniert es nicht, da in der Originaltabelle die Formatierungen gleich sind."
Trotzdem nochmal ein Dankeschön
Mfg Jörg
Anzeige
AW: Zeilen in bestimmten Bereichen löschen
19.07.2009 21:25:18
Tino
Hallo,
habe dich dann wohl mit der roten Farbe falsch verstanden, es gibt ja noch einen Vorschlag.
Gruß Tino
AW: Zeilen in bestimmten Bereichen löschen
19.07.2009 19:41:19
Josef
Hallo Jörg,
in ein allgemeines Modul.
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Sub löscheZeilen()
  Dim lngRow As Long, lngLast As Long, lngEnd As Long
  Dim rngDel As Range
  
  lngRow = 2
  lngEnd = ActiveSheet.UsedRange.Rows.Count
  
  Do While lngLast + 1 < lngEnd
    lngLast = Application.Min(lngEnd, Cells(lngRow, 1).End(xlDown).Row - 1)
    If lngLast >= lngRow + 20 Then
      If rngDel Is Nothing Then
        Set rngDel = Range(Cells(lngRow + 20, 1), Cells(lngLast, 1))
      Else
        Set rngDel = Union(rngDel, Range(Cells(lngRow + 20, 1), Cells(lngLast, 1)))
      End If
    End If
    lngRow = lngLast + 1
  Loop
  
  If Not rngDel Is Nothing Then rngDel.EntireRow.Delete
  
  Set rngDel = Nothing
End Sub

Gruß Sepp

Anzeige
AW: Zeilen in bestimmten Bereichen löschen
19.07.2009 21:30:51
Kaiser
Hallo Sepp
Habe gerade erste Tests durchgeführt und ich muss sagen. PERFEKT.
Du hast mir jetzt schon das 2. Mal weitergeholfen. Also ein GROSSES DANKESCHÖN.
Könntest Du vielleicht bitte noch eine kurze Erklärung dazuschreiben, da ich es noch nicht ganz kapiert habe.
MfG Jörg
AW: Zeilen in bestimmten Bereichen löschen
19.07.2009 22:08:32
Josef
Hallo Jörg,
hier noch ein paar Kommentare.
Sub löscheZeilen()
  Dim lngRow As Long, lngLast As Long, lngEnd As Long
  Dim rngDel As Range
  
  'Startzeile
  lngRow = 2
  'Letzte Zeile bestimmen
  lngEnd = ActiveSheet.UsedRange.Rows.Count
  
  Do While lngLast + 1 < lngEnd
    'nächsten Eintrag in "A" ermitteln und eine Zeile zurück
    lngLast = Application.Min(lngEnd, Cells(lngRow, 1).End(xlDown).Row - 1)
    'wenn mehr als 20 Zeilen zwischen erstem und letzten Eintrag
    If lngLast >= lngRow + 20 Then
      'zu löschenden Bereich festlegen
      If rngDel Is Nothing Then
        Set rngDel = Range(Cells(lngRow + 20, 1), Cells(lngLast, 1))
      Else
        Set rngDel = Union(rngDel, Range(Cells(lngRow + 20, 1), Cells(lngLast, 1)))
      End If
    End If
    'Startzeile auf den nächsten Eintrag stellen
    lngRow = lngLast + 1
  Loop
  
  'Bereich löchen
  If Not rngDel Is Nothing Then rngDel.EntireRow.Delete
  
  Set rngDel = Nothing
End Sub

Gruß Sepp

Anzeige
AW: Zeilen in bestimmten Bereichen löschen
19.07.2009 22:22:15
Kaiser
Hi Sepp
Vielen Dank auch für die schnelle und aussagekräftige Erklärung.
Werde mir dies morgen noch mal ganz in Ruhe anschauen und versuchen nachzuvollziehen.
Habe soeben auch erste Tests mit einer Kopie der Originaldatei durchgeführt und muss sagen auch da PERFEKT. Die ca.7000 Zeilen sind in 0Komma Nichts aussortiert.
Mfg Jörg
Ja, der Josef...
20.07.2009 15:16:27
Jochen
Hi,
...der ist Hajo_Zi dicht auf den Fersen.
mfg Jochen
Nee, schon lange weit voraus... owT
21.07.2009 03:35:12
Luc:-?
:-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige