Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Zellen löschen mit Zeichenanzahl kleiner als


Betrifft: Zellen löschen mit Zeichenanzahl kleiner als von: Boernie
Geschrieben am: 23.10.2017 11:42:18

Hallo,

ich habe in einer Spalte Nummern verschiedener Länge. Jetzt möchte ich alle Zellen mit weniger als 8 Zahlen löschen. Optimal wäre noch eine InBox, in der ich die Anzahl frei bestimmen kann.

Vielen Dank schon mal

Boernie

  

Betrifft: AW: Zellen löschen mit Zeichenanzahl kleiner als von: Daniel
Geschrieben am: 23.10.2017 12:08:14

Hi

so vielleicht:

Sub löschen()
Dim MinLänge As Long

MinLänge = Application.InputBox("Mindesanzahl Zeichen", Type:=1)
If MinLänge = 0 Then Exit Sub

With ActiveSheet.UsedRange
    With .Columns(.Columns.Count + 1)
        .FormulaR1C1 = "=IF(Len(RC1)<" & MinLänge & ",0,Row())"
        .Cells(1, 1).Value = 0
        .EntireRow.RemoveDuplicates .Column, xlNo
        .ClearContents
    End With
End With
    
End Sub
die Spaltennummer der Spalte, welche überprüft wird, gibst du hier an, im Beispiel die Spaltennummer 1 für Spalte A:
.FormulaR1C1 = "=IF(Len(RC1)<" & MinLänge & ",0,Row())"

gruß Daniel


  

Betrifft: AW: Zellen löschen mit Zeichenanzahl kleiner als von: Boernie
Geschrieben am: 23.10.2017 14:07:52

Vielen Dank Daniel,

das klappt genauso, wie ich es wollte.
Wie müsste ich den Code umbauen um Zellen "größer als" zu löschen?

Danke
Boernie


  

Betrifft: AW: Zellen löschen mit Zeichenanzahl kleiner als von: Daniel
Geschrieben am: 23.10.2017 16:49:25

Hi

hier zu einfach die Formel entsprechend anpassen.
Das Prinzip dieser Lösung ist, dass man am Tabellenende eine Formel hinschreibt, welche alle Zeilen, die gelöscht werden sollen mit 0 kennzeichnet und alle die stehenbleiben sollen mit der aktuellen Zeilennummer.
Dann kannst du das Löschen schnell und einfach über die Funktion DATEN - DATENTOOLS - DUPLIKATE ENTFERNEN ausführen.

Wenn sich jetzt die Bedingung zum löschen ändert, muss du eigentlich nur die Formel anpassen (die Zeile, die ich dir schon gezeigt habe)
Wie das mit dem "Größer" und "Kleiner" funktioniert, muss ich dir hoffentlich nicht erklären, oder?

Gruß Daniel


  

Betrifft: AW: Zellen löschen mit Zeichenanzahl kleiner als von: Boernie
Geschrieben am: 24.10.2017 08:09:00

Hallo Daniel,

hat super funktioniert.

Danke nochmal
Boernie


  

Betrifft: AW: Zellen löschen mit Zeichenanzahl kleiner als von: UweD
Geschrieben am: 23.10.2017 12:52:09

Hallo so??

- Ein Autofilter wird gesetzt für ZAHLEN kleine 10.000.000 (8 Stellen)
- Wenn Zeilen vorhanden sind, werden die gelöscht
- Sonst erfolgt eine Meldung
- Autofilter wird zurückgesetzt


Private Sub TT()
    On Error GoTo Fehler
    Dim TB As Worksheet, SP As Integer, EZ As Integer, LR As Double, Anz As Integer
    
    '*** Stammdaten Anfang 
    Set TB = Sheets("Tabelle1")
    SP = 3 'Spalte C 
    EZ = 2 'ab Zeile.. wegen Überschrift 
    '*** Stammdaten Ende 
    
    If TB.AutoFilterMode Then TB.AutoFilterMode = False ' Autofilter ausschalten 
    LR = TB.Cells(TB.Rows.Count, SP).End(xlUp).Row 'letzte Zeile der Spalte 
    
    Anz = InputBox("Anzahl Zeichen?", "Löschen", 8)
    TB.Cells(EZ - 1, SP).Resize(LR).AutoFilter Field:=1, Criteria1:="<" & 10 ^ (Anz - 1) _
        , Operator:=xlAnd
    If WorksheetFunction.CountIf(Columns(SP), "<" & 10 ^ (Anz - 1)) > 1 Then
        TB.Rows(EZ).Resize(LR).Delete Shift:=xlUp
    Else
        MsgBox "Keine Werte vorhanden"
    End If
    
    TB.AutoFilterMode = False ' Autofilter ausschalten 

    
    '*** Fehlerbehandlung 
    Err.Clear
Fehler:
    Application.EnableEvents = True
    If Err.Number <> 0 Then MsgBox "Fehler: " & _
        Err.Number & vbLf & Err.Description: Err.Clear
End Sub

LG UweD


Beiträge aus den Excel-Beispielen zum Thema "Zellen löschen mit Zeichenanzahl kleiner als"