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

Array verwenden

Forumthread: Array verwenden

Array verwenden
25.04.2024 11:49:37
Georg
Liebe Mitglieder, der Ausschnitt zeigt eine Code der gut funktioniert. Allerdings wird die Datenmenge immer mehr. Ich würde gerne einen Array verwenden, habe davon aber sehr wenig Ahnung. Wie würde der Code lauten, wenn ich einen Array mit Namen arrDaten verwende?
Vielen Dank G

'Spalte I, Zeilen ohne Werte löschen, Spalte I Lohnart


With ThisWorkbook.Worksheets("Daten")
For z = .Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1 'beim Löschen rückwärts laufen lassen
If .Cells(z, 9).Value = "" Then
.Rows(z).Delete Shift:=xlDown
End If
Next z
End With
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Array verwenden
25.04.2024 12:01:59
{Boris}
Hi,

ich frag mal anders: Wieso müssen überhaupt Zeilen gelöscht werden? Das zeugt (meistens) von einer suboptimalen Tabellenstruktur / Datenerfassung.
Wenn es sich aber doch nicht vermeiden lässt, dann würde ich das mit dem Autofilter lösen:
Nach Leerzellen filtern und das Filterergebnis in einem Rutsch löschen.
Dazu liefert Dir der Makrorecorder erste Ansätze.

Aber vielleicht ist das ja alles gar nicht nötig - siehe meine Frage...?!

VG, Boris
Anzeige
AW: Array verwenden
25.04.2024 12:16:02
MCO
Hallo Georg!

Am einfachsten ist es wahrscheinlich so:

    Dim rng As Range

Set rng = Range("i2:I" & ActiveSheet.UsedRange.Rows.Count).SpecialCells(xlCellTypeBlanks)
rng.Rows.EntireRow.Delete


Gruß, MCO
AW: Array-Fan, aber ...
25.04.2024 13:40:41
Fennek
Hallo,

Credits an Daniel

mit einer kleinen Formel können mit "Duplikate entfernen" auch sehr viele Zeilen sehr schnell gelöscht werden. Auch in VBA geht das zu programmieren.

In der ersten freien Spalte wird in Zeile 1 eine "0" eingetragen. Dann in allen anderen Zeilen die Formel:

=wenn(I2="";0;zeile())

Danach stehen in allen Zeilen, die gelöscht werden sollen eine "0", in den anderen eine Zahl größer null.

Die erste Zelle der neuen Spalte wird ausgewählt, dass "Duplikate entfernen"

Bitte zuerst an einer Kopie ausprobieren.

mfg
Anzeige
AW: Array verwenden
25.04.2024 14:35:30
daniel
das Problem ist hier das Löschen der Zeilen.
jedes Löschen einer Zeile verursacht Aufwand und kostet Zeit.
um diesen Vorgang zu beschleunigen braucht man zwei Schritte:
1. Liste vorher so sortieren, dass die zu löschenden Zeilen einen lückenlosen Block bilden
2. den Block in einem Arbeitsschritt löschen.

Der Grund ist, dass Excel beim Löschen von Zeilen ein paar Hintergrundaktivitäten ausführt.
Diese können für alle lückenlose Blöcke gemeinschaftlich ausgeführt werden, so dass Range("1:10000").Delete genauso lang dauert wie Range("1:1").Delete
daher erst sortieren und dann löschen.
Gruß Daniel
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