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

Löschen jeder n-ten Zeile

Löschen jeder n-ten Zeile
04.11.2016 09:21:15
Till
Guten Morgen ihr VBA-Profis,
ich habe folgendes Problem:
Ich habe eine Excel Tabelle, bei der beginnend ab der 7. Zeile jede 60, 61, 62, 63, 64. und 65. Zeile gelöscht werden soll.
Um es kurz zu erläutern, es sollen die Zeilen 66 - 71 gelöscht werden, dann sollen 59 Zeilen erhalten bleiben und anschließend sollen wieder 6 Zeilen gelöscht werden. Das soll solange durchgeführt werden, bis keine Daten mehr kommen.
Hinweis: Es sind nicht durchgehend alle Zeilen mit Daten gefüllt.
Danke schon Mal für eure Hilfe!!
Gruß
Till
PS. ich bin neu hier im Forum und bitte zu Entschuldigen falls ich irgendwelche Regel gebrochen habe.

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Löschen jeder n-ten Zeile
04.11.2016 09:45:53
Daniel
Hi
würde ich so lösen:
1. in einer Hilfsspalte am Tabellenende eine Formel einfügen, welche die zu löschenden Zeilen kennzeichnet bzw
=Wenn(Rest(Zeile()-7;66)>60;1;"")
dann sollten in allen Zellen, die gelöscht werden sollen, eine 1 stehen, in den anderen der Leerstring
(falls nicht, ggf die Werte nochmal anpassen)
2. in der Hilfsspalte dann mit Start-Bearbeiten-Suchen und Auswählen - Inhalte - Formeln - Zahlen die Selektion auf die Zellen mit 1 einschränken
3. diese Zellen dann mit der Option "ganze Zeile" löschen.
das erstmal von Hand ausprobieren.
Wenns funktioniert, kannst du die Schritte problemlos mit dem Recorder aufzeichnen, um sie dann von einem Makro ausführen zu lassen.
Gruß Daniel
Anzeige
AW: Löschen jeder n-ten Zeile
04.11.2016 10:44:06
Tino
Hallo,
ich habe es mal so versucht.
Modul Modul1
Option Explicit 

Sub Loeschen()
Dim rng As Range
Dim ArTemp, varValue
Dim nCounter&, n&, booLoeschen As Boolean

Const LoescheAbZeile& = 60
Const LoscheAnzahlZeilen& = 5

'Spalte wo Daten enthalten sind für Prüfung ob leer
Const RefSpalteDaten& = 1

'Tabelle anpassen
With Tabelle1
'Range ab A7 bis letzte
Set rng = .Range("A7", .Cells(.Rows.Count, RefSpalteDaten).End(xlUp)).EntireRow
'Daten ab A7 vorhanden?
If rng.Rows(1).Row < 7 Then Exit Sub 'keine Daten
'Daten in Array
ArTemp = rng.Columns(RefSpalteDaten).Value2
'Schleife
For n = Lbound(ArTemp) To Ubound(ArTemp)
varValue = CStr(ArTemp(n, 1)) 'Zwischenablage
ArTemp(n, 1) = n 'Zähler für Sortierung

If varValue <> "" Then 'Daten enthalten
nCounter = nCounter + 1 'Zähler
If n >= LoescheAbZeile Then
If nCounter Mod LoescheAbZeile <= LoscheAnzahlZeilen Then 'Zeile 60 bis 65?
ArTemp(n, 1) = True 'Löschen?
booLoeschen = True
End If
End If
End If
Next n

If booLoeschen Then
With rng
'Daten in letzte Spalte
.Columns(.Columns.Count).Value = ArTemp
'Sortieren
.Sort key1:=.Cells(1, .Columns.Count), Order1:=xlAscending, Header:=xlNo
'Zeile mit Wahrheitswert löschen
.SpecialCells(xlCellTypeConstants, 4).EntireRow.Delete
'Hilfsspalte löschen
.Columns(.Columns.Count).EntireColumn.Delete
End With
End If
End With
End Sub

Gruß Tino
Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige