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

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

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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige