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

Forumthread: Anzahl Zeilen im Markierten Bereich

Anzahl Zeilen im Markierten Bereich
Christian
Hallo allerseits,
ich habe folgenden code zum löschen von Leerzeilen:
Dim j As Long
For j = 100 To 1 Step -1
If Application.WorksheetFunction.CountA(Range("A" & j & ":AA" & j)) = 0 Then Cells(j, 1). _
EntireRow.Delete
Next j
Nun meine Fragen:
1. Das Makro läuft sehr langsam, hat jemand eine Idee zum Beschleunigen?
2. Momentan sind nur 100 Zeilen eingestellt fest eingestellt, ich würde gerne diese Zahl durch die Anzahl der tatsächlich vorhandenen Zeilen ersetzen, damit es nicht wieder manuell angepasst werden muss.
Bin für jede Anregung dankbar!
gruss
christian
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Anzahl Zeilen im Markierten Bereich
22.07.2009 17:25:28
Hajo_Zi
Halo Christian,
vielleicht läuft das schneller?

Sub Leerzeilen_loeschen()
'   alle Leerzeilen löschen
Dim LoI As Long
Dim RaZeile As Range
Application.ScreenUpdating = False
For LoI = 1 To ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
If Application.WorksheetFunction.CountA(Rows(LoI))  ActiveSheet.UsedRange. _
SpecialCells(xlCellTypeLastCell).Column Then
If Rows(LoI).SpecialCells(xlCellTypeBlanks).Count = ActiveSheet.UsedRange. _
SpecialCells(xlCellTypeLastCell).Column Then
If RaZeile Is Nothing Then
Set RaZeile = Rows(LoI)
Else
Set RaZeile = Union(RaZeile, Rows(LoI))
End If
End If
End If
Next LoI
If Not RaZeile Is Nothing Then RaZeile.Delete
Application.ScreenUpdating = True
Set RaZeile = Nothing
End Sub

Anzeige
AW: Anzahl Zeilen im Markierten Bereich
22.07.2009 21:07:02
Daniel
Hi
einzelne Zellen löschen ist sehr langsam.
schneller wirds, wenn die Zeilen so zusammensortiert werden können, daß die Zu löschenenden Zeilen einen zusammenhängenden Block bilden.
Wenn deine Tabelle sortierbar ist und nach Spalte AA keine weiteren Daten mehr enthält, dann brauchst du doch eigentlich nur den ganzen Zellbereich zu markieren und zu sortieren, weil leere Zellen immer ans Ende sortiert werden.
alternativ geht auch diesen Makro, die orginalsortierung bleibt erhalten:
Sub löschen()
Dim sp As Long
With ActiveSheet.UsedRange
sp = WorksheetFunction.Min(27, .Column + .Columns.Count - 1)
With .Columns(.Columns.Count).Offset(0, 1)
.FormulaR1C1 = "=if(counta(RC1:RC" & sp & ")=0,"""",Row())"
.Formula = .Value
.EntireRow.Sort key1:=.Cells(1, 1), header:=xlNo
On Error Resume Next
.SpecialCells(xlCellTypeBlanks).EntireRow.Clear
On Error GoTo 0
.Clear
End With
End With
End Sub
bei diesem Makro werden Anzahl Zeilen und Anzahl Spalten automatisch ermittelt (geprüft wird aber nur bis zur Spalte AA).
Gruß, Daniel
ps: ein schnellers Makro zum löschen deiner Daten wirst du wahrscheinlich kaum finden.
Anzeige
AW: Anzahl Zeilen im Markierten Bereich
23.07.2009 10:38:54
Christian
Danke Hajo und Daniel!
das Makro von Hajo läuft tatsächlich wesentlich schneller als das bisherige!
Der Vorschlag mit sortieren von Daniel war mir auch sehr sympathisch, aber komischerweise wurden die rahmen der zeilen nicht mitsortiert?!?
danke und gruss
christian
AW: Anzahl Zeilen im Markierten Bereich
23.07.2009 23:30:18
Daniel
Hi
naja, sortieren und Rahmenformate passt auch nicht so richtig zusammen.
wenn du sowieso ein Makro hast, kannst du die Rahmen ja auch nachträglich einfügen.
Gruß, Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige