Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1576to1580
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 zwischen zwei Zeichen löschen

Zeilen zwischen zwei Zeichen löschen
11.09.2017 15:53:20
Marc
Hallo zusammen,
ich habe das Problem, dass ich eine Excel Datei mit insgesamt knappen 10000 Zeilen habe.
Zwischen den Zeilen, die ich brauche stehen immer wieder Zeilen, in denen für mich Müll drin steht.
Diese erste Zeile mit Müll beginnt immer mit einer "{", die vorletzte Zeile mit Müll beginnt immer mit einer "}".
Ich würde nun gerne alle Zeilen, die mit dem { beginnt und die Zeile nach dem } Zeichen löschen.
Geht sowas?
Danke und lieben Gruß
Marc

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Autofilter
11.09.2017 16:06:08
lupo1
Deine Überschrift steht in A2
Deine Daten beginnen ab A3
B3: =B2+(LINKS(A3)="{")-(LINKS(A1)="}") runterkopieren als Hilfsspalte
B2 autofiltern nach 0
Das Filtrat A:A in eine neue Tabelle kopieren
AW: Autofilter
11.09.2017 16:09:47
Marc
Cool, danke!!!
Ich verstehe es sogar!! :)
AW: Zeilen zwischen zwei Zeichen löschen
11.09.2017 16:17:02
UweD
Hallo
hier noch VBA
Sub Klammern()
    On Error GoTo Fehler
    Dim TB1, i As Double
    Dim SP As Integer, ZE As Integer, LR As Double
    Dim Dlast As Double
    
    '*** bescheunigt das Makro 
    Application.ScreenUpdating = False
    
    
    '*** Stammdaten Anfang 
    Set TB1 = Sheets("Tabelle1") 'aus bestimmtem Blatt 
    SP = 1 'Spalte A 
    ZE = 2 'ab Zeile 2 wegen Überschrift 
    '*** Stammdaten Ende 
    
    With TB1
        LR = .Cells(.Rows.Count, SP).End(xlUp).Row 'letzte Zeile der Spalte 
        For i = LR To ZE Step -1
            If Left(.Cells(i, SP), 1) = "}" Then
                Dlast = i + 1
            End If
        
            If Left(.Cells(i, SP), 1) = "{" And Dlast > i Then
                .Range(Rows(i), Rows(Dlast)).Delete xlUp
                
            End If
        Next
    End With
    
    '*** Fehlerbehandlung 
    Err.Clear
Fehler:
    If Err.Number <> 0 Then MsgBox "Fehler: " & _
        Err.Number & vbLf & Err.Description: Err.Clear
End Sub

LG UweD
Anzeige
AW: Zeilen zwischen zwei Zeichen löschen
11.09.2017 16:24:48
Marc
Vielen Dank!!!!!!
AW: Zeilen zwischen zwei Zeichen löschen
11.09.2017 16:29:03
Marc
Bekomme eine Typen unverträglich....
Fehler 13....
Dabei fand ich Dich als Typ total cool!
AW: Zeilen zwischen zwei Zeichen löschen
12.09.2017 08:05:02
UweD
Hallo
setzt mal noch die 2 Punkte.
.Range(.Rows(i), .Rows(Dlast)).Delete xlUp
LG UweD
Zeilen zwischen zwei Zeichen löschen ohne VBA
12.09.2017 10:01:35
Daniel
Hi
manuell kannst du das so schnell erledigen:
verwende eine Hilfsspalte (fürs Beispiel Spalte B)
die erste Zeile muss eine Überschriftenzeile sein.
schreibe in die zweite Zeile der Hilfsspalte diese Formel:
=Wenn(Links(A3;1)="{";wahr;falsch)

schreibe in die dritte Zeile der Hilfsspalte B diese Formel:
=Wenn(oder(Links(A3;1)="{";Links(A1;1)="}");nicht(A2);A2)
ziehe die Formel aus B3 bis zum Tabellenende runter (B2 nicht mit ziehen)
dann sollten alle Formeln, die gelöscht werden müssen mit WAHR gekennzeichnet sein und alle die stehen bleiben müssen mit FALSCH.
zum Löschen kannst du dann mit dem AUTOGFILTER nach WAHR filtern und diese Zeilen löschen.
bei vielen Zeilen geht's eventuell schneller, wenn du die Hilfsspalte kopierst und als Wert einfügts, und vor dem Filtern und Löschen die Liste nach der Hilfsspalte sortierst.
alternativ kannst du noch eine zweite Hilfsspalte C einfügen.
- dort kommt die Formel rein (Formel für C2)
=Wenn(B2;0;Zeile())

- diese Formel wieder bis nach unten ziehen
- in die Zelle C1 kommt die 0
- wende auf die ganze Tabelle die Funktion DATEN - DATENTTOOLS - DUPLIKATE ENTFERNEN an, mit der Spalte C als Kriterium und der Option "keine Hilfssspalte")
das ganze geht natürlich auch per Code:
Sub Löschen()
With ActiveSheet.UsedRange
With .Columns(.Columns.Count + 1).Resize(, 2)
.Cells(1, 1).Value = "check"
.Cells(2, 1).FormulaR1C1 = "=IF(LEFT(RC[-1],1)=""{"",TRUE,FALSE)"
.Cells(3, 1).Resize(.Rows.Count - 2).FormulaR1C1 = _
"=IF(OR(LEFT(RC1,1)=""{"",LEFT(R[-2]C1,1)=""}""),NOT(R[-1]C),R[-1]C)"
.Cells(1, 2) = 0
.Cells(2, 2).Resize(.Rows.Count - 1).FormulaR1C1 = "=IF(RC[-1],0,ROW())"
.EntireRow.RemoveDuplicates .Column + 1, xlNo
.ClearContents
End With
End With
End Sub
das ganze sollte wesentlich schneller sein als eine Schleife zum Löschen.
außerdem kannst du einfacher kontrollieren, ob die richtigen Zeilen zum löschen gekennzeichnet wurden, wenn du den Code nach dem Einfügen der Formeln stoppst.
Gruß Daniel
Anzeige

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige