Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bestimmte Zahlenreihen löschen

Forumthread: Bestimmte Zahlenreihen löschen

Bestimmte Zahlenreihen löschen
08.11.2024 11:33:39
jaschi
Hallo zusammen,

ich bräuchte eure Hilfe da ich fast keine vba Kenntnisse habe.
Ich möchte in der Spalte B bestimmte Zahlenreihen löschen.
Es handelt sich dabei um Zahlenreihen von 40-1 bis 40-8.
Das geht analog so weiter zu 59-1 bis 59-8.
Jede Zahl steht in einer separaten Zelle.
Wie kann ich das am besten mit vba lösen.
Es wäre toll wenn ihr mir helfen könntet.

Grüße jaschi
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bestimmte Zahlenreihen löschen
08.11.2024 12:06:45
Yal
Hallo Jaschi,

muss es unbedingt VBA sein?
per Hand würde so vorgehen:
- in der erste freie Spalte rechts vom Datenblock die Formel =ZEILE() eingeben, diese bis am Ende vom Zeilenblock runterziehen (=Hilfespalte)
- die ganze Spalte markieren, kopieren, als Wert einfügen
--> diese zwei Schritten kannst Du weglassen, falls eine Spalte Daten beinhalten, die bereits eine Reihenfolge hat!
- Nach Spalte B sortieren
- die zu löschende Bereiche löschen (Markierung über die Zeilen-Zahlen links oder Markierung nur in Spalte B und anschliessend Shift+Leertaste)
- sortieren nach der Inhalt der Hilfespalte
- die Hilfespalte wieder löschen


Mit VBA würde es ungefähr so aussehen:
Sub löschen()

Dim i As Long

With Worksheets("Tabelle1") 'anpasssen
For i = .Cells(Rows.Count, "B").End(xlUp) To 2 Step -1 'bei Zeilen löschen wie beim Bodenwischen: immer zurück zu Tür, sonst tritt man ins Gewerk!
Select Case Z.Value
Case "40-1" To "40-8", "50-1" To "50-8"
.Rows(i).Delete
End Select
Next
End With
End Sub


VG
Yal
Anzeige
AW: Bestimmte Zahlenreihen löschen
08.11.2024 12:40:20
jaschi
Hallo YaL,
die Variable z war noch nicht definiert.
Nach dem ich das gemacht habe bricht das Programm in der Zeile
Selcect Case z.Value ab.
Was ist da noch falsch?

Grüße jaschi



Private Sub Zeichenlaenge_loeschen()
Dim i As Long
Dim z
With Worksheets("Tabelle18") 'anpasssen
For i = .Cells(Rows.Count, 2).End(xlUp).Row To 2 Step -1 'bei Zeilen löschen wie beim Bodenwischen: immer zurück zu Tür, sonst tritt man ins Gewerk!
Select Case z.Value
Case "52-1" To "52-8", "53-1" To "53-8", "54-1" To "54-8", "55-1" To "55-8", "56-1" To "56-8"
.Rows(i).Delete
End Select
Next
End With
End Sub>
Anzeige
AW: Bestimmte Zahlenreihen löschen
08.11.2024 12:59:51
Yal
Hallo Jaschi,

sorry, habe gemurkst, weil ich zuerst einen "For Each" machen wollte, dann festgestellt, dass bei Löschen immer "zurück"* gehen muss und auf Zeilennummer umgestellt aber den "Z.Value" nicht angepasst.

So ist vollständig:
Sub löschen()

Dim i As Long

With Worksheets("Tabelle1") 'anpasssen
For i = .Cells(Rows.Count, "B").End(xlUp) To 2 Step -1 'bei Zeilen löschen wie beim Bodenwischen: immer zurück zu Tür, sonst tritt man ins Gewerk!
Select Case .Cells(i, "B").Value
Case "40-1" To "40-8", "50-1" To "50-8"
.Rows(i).Delete
End Select
Next
End With
End Sub


Das wäre die Lösung mit For Each. Geht aber beim Löschen nicht, aber beim Färben:
Sub Rot_färben()

Dim Z As Range

With Worksheets("Tabelle1") 'anpasssen
For Each Z In Range(.Range("B2"), .Cells(Rows.Count, "B").End(xlUp))
Select Case Z.Value
Case "40-1" To "40-8", "50-1" To "50-8"
Z.EntireRow.Interior.ColorIndex = 3 'rot
End Select
Next
End With
End Sub


*: warum beim Löschen rückwärts: wenn Du auf Zeile x bist und diese muss gelöscht werden, dann ist die Zeile x+1 die neue Zeile x, es springt aber sofort auf die nächste Zeile, die x+1, die aber die ehemalige x+2 war. Die ehemalige x+1 wird gar nicht behandelt, spricht, es wird nur jede zweite Zeile gelöscht (es sei denn, Du hast das Glück, dass nicht 2 Zeilen nacheinander zu löschen seien).

VG
Yal
Anzeige
AW: Bestimmte Zahlenreihen löschen
08.11.2024 14:50:28
jaschi
Hallo Yal,

vielen Dank, es funktioniert 1A.
***** für dich.

Grüße jaschi

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige