Anzeige
Archiv - Navigation
1392to1396
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

Alle Zeilen ohne Zahl löschen

Alle Zeilen ohne Zahl löschen
29.11.2014 14:10:05
Ralph
Hallo zusammen,
ich habe eine Tabelle die aus einem *.htm File erzeugt wird. In dieser Tabelle (ca. 17000 Zeilen) möchte ich nun per VBA alle Zeilen löschen, die nicht folgenden Kriterien entsprechen:
1. Der Inhalt in Spalte A ist eine numerische Zahl
2. Diese Zahl ist grösser als 9999
Im Anschluss daran sollen alle doppelten Zeilen gelöscht werden (Auch VBA).
Vielen lieben Dank im Voraus, Gruss Ralph

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Alle Zeilen ohne Zahl löschen
29.11.2014 14:27:34
Ralph
Hallo nochmal,
es tut mir leid aber ich muss nochmal nachbessern bzw. korrigieren. Ich habe soeben festgestellt, dass gewissen Zeilen auch stehen bleiben müssen die keine rein numerische Zahl in Spalte A enthalten.
Die betroffenen Zeilen enthalten Werte mit einem "-", hier ein paar Beispiele:
10624411-1, 10624412-1, 10612227-4, 10648898-1
Diese Zeilen müssen wie gesagt also auch stehen bleiben.
Nochmals sorry & Gruss, Ralph

AW: Alle Zeilen ohne Zahl löschen
29.11.2014 18:55:58
Tino
Hallo,
kannst mal diesen Code testen.
Was ich es nicht weis, sind es echte Zahlen oder nur Text!
Sub Start()
Dim rngHilfe As Range

With Tabelle1 'Tabelle anpassen 
    'ab A2, in Zeile 1 ist Überschrift (evtl. anpassen) 
    Set rngHilfe = .Range("A2", .Cells(.Rows.Count, 1).End(xlUp))
    If rngHilfe.Rows(1).Row < 2 Then Exit Sub 'keine Daten 
    Set rngHilfe = rngHilfe.EntireRow.Columns(.Columns.Count)
End With

Events_ False

On Error GoTo ErrorHandler:

With Application.WorksheetFunction
    'Daten löschen die > 9999 
    rngHilfe.FormulaR1C1 = "=IF(AND(RC1>9999,RC1<10^15),TRUE,ROW())"
    If .CountIf(rngHilfe, True) > 0 Then
        rngHilfe.EntireRow.Sort Key1:=rngHilfe.Cells(1, 1), Order1:=xlAscending, Header:=xlNo
        rngHilfe.SpecialCells(xlCellTypeFormulas, 4).EntireRow.Delete
    End If
    rngHilfe.Clear
    
    'doppelte Datenb löschen 
    rngHilfe.FormulaR1C1 = "=IF(COUNTIF(R" & rngHilfe.Rows(1).Row & "C1:RC1,RC1)>1,TRUE,ROW())"
    If .CountIf(rngHilfe, True) > 0 Then
        rngHilfe.EntireRow.Sort Key1:=rngHilfe.Cells(1, 1), Order1:=xlAscending, Header:=xlNo
        rngHilfe.SpecialCells(xlCellTypeFormulas, 4).EntireRow.Delete
    End If
    rngHilfe.Clear
    rngHilfe.EntireColumn.Delete
    
End With

ErrorHandler:
Events_ True
End Sub

Sub Events_(booSchalter As Boolean)
With Application
    .ScreenUpdating = booSchalter
    .EnableEvents = booSchalter
    .DisplayAlerts = booSchalter
    .Calculation = IIf(booSchalter, xlCalculationAutomatic, xlCalculationManual)
End With
End Sub
Gruß Tino

Anzeige
Bedingung nicht übersehen.
29.11.2014 20:51:43
Tino
Hallo,
ersetze die Zeile
rngHilfe.FormulaR1C1 = "=IF(AND(RC1>9999,RC1
durch diese
rngHilfe.FormulaR1C1 = "=NOT(NOT(ISERR(AND(LEFT(RC1,5)*1>9999,LEFT(RC1,5)*1
Gruß Tino

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige