Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
624to628
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
624to628
624to628
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zeile aus Array löschen

Zeile aus Array löschen
22.06.2005 16:02:14
PeterP
Hallo Ihr!
Leider sind die VBA-Arraymethoden in Excel nicht sonderlich gut dokumentiert (zumindest finde ich nicht viel mehr als redim).
Was ist die effektivste Variante, in einem mehrspaltigen Array Zeilen zu löschen, einzufügen und auszutauschen? Im konkreten Fall geht es darum, in einem ca. 1000-zeiligen Array mittendrin jeweils mehrere zusammenhängende Zeilen, deren Zellen gewisse Kriterien erfüllen gegen eine andere Zeile auszutauschen.
Mir ist derzeitig nichts anderes möglich, als das Array zeilenweise zu scannen und in ein anderes Array umzuschreiben ...
Danke&Gruß
Peter

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

Betreff
Datum
Anwender
Anzeige
AW: Zeile aus Array löschen
22.06.2005 16:44:28
Luschi
Hallo Peter,
leider behandelt M$ Arrays sehr stiefmütterlich. Deshalb schreibe ich die
Array-Elemente in eine Hilfstabelle, führe dort die Manipulationen aus und schreibe
dann die Werte in das Array zurück. So mache ich es auch mit dem Sortieren von
Arrays und nutze so die Sortiermöglichkeiten von Tabellen. Das ist dann ein
Vba-5-Zeiler statt den umständlichen BubbleSort- bzw. QuickSort-Funktionen.
Gruß von Luschi
aus klein-Paris
AW: Zeile aus Array löschen
23.06.2005 07:30:10
PeterP
Hallo Luschi, Du Kleiner ;-)
meinst Du, daß Du alle Werte in ein Excel-Sheet schreibst? Das macht die Sache doch extrem langsam! Bei meiner Zahl an Arrayzeilen wird das wohl leider keine Option sein ...
Gibt es nicht wenigstens eine Mimik, in VBA-Arrays eine ganze Zeile anzusprechen?
Vielleicht hat ja heute vormittag noch jemand einen Tip, ansonsten muß ichs halt auf meine Weise(in anderes Array umschreiben) lösen, was aber sicher nicht die effektivste ist.
Gruß
Peter
Anzeige
AW: Zeile aus Array löschen
25.06.2005 23:09:55
MichaV
Hallo
was meinst Du denn mit "VBA-Arraymethoden"?
"Gibt es nicht wenigstens eine Mimik, in VBA-Arrays eine ganze Zeile anzusprechen":
Mit Application.WorksheetFunction.Index(arr, 5) erhältst Du die gesamte Zeile 5 des Arrays arr. Rückgabe ist ein 1D- Array, die Zeile halt. Das geht aber nur bei 2D- Arrays und bis XL9.0 scheinbar nur bis Arrays mit 5461 Elementen.
Da Excel- Funktionen in VBA nur Werte liefern ist es m.E. nicht möglich, Zeilen in Matrizen "per Knopfdruck" auszutauschen. Da bleibt Dir wohl nur, das Array Zeile für Zeile durchzugehen.
Gruß- Micha
AW: Zeile aus Array löschen
26.06.2005 09:08:48
PeterP
Hallo Micha,
ich habs nun so gelöst, daß ich das Array gleich beim ersten Mal sorgfältiger filtere.
ich lese erst einen Zellenbereich in ein zweidimensionales Array und filtere diesen dann in ein weiteres. Ursprünglich wollte ich das schon gefilterte Array dann nochmal bearbeiten und einzelne Datensätze austauschen, wobei dann manchmal aus zwei Datensätzen/Arrayzeilen eine geworden wäre. Das vermeide ich jetzt, so daß ich nicht mehr die Notwendigkeit habe, die Zeilen zu eliminieren.
Dein Beispielcode bezieht sich ja auf Sheetfunktionen, die ich vermeiden wollte, da mir das zu langsam geht (ich lese eine ganze Directory Excel-Dateien ein, durchlaufe jeweils alle Sheets darin und lese die Daten aus einem bestimmten Bereich der Sheets, ein, filtere diese erst nach Strings, dann nach Bedingungen und gebe sie dann aus.).
Ich hatte zuerst ohne Array gearbeitet, da dauerte ein Test-Durchlauf für ca. 10 Dateien á 10 Sheets und einem Bereich von 10x25 Zellen ca.10 Minuten. Jetzt filtere ich noch wesentlich intensiver (allerdings eben nur im Speicher/Array) und der Coode läuft ca. 2 Minuten inklusive Ausgabe+Formatierung!
Kennt nicht vielleicht jemand ein Totorial im Web, was sich möglichst intensiv mit mehrdimensionalen Arrays (also nicht die Sheet-Arrayfunktion) in VBA auseinandersetzt?
Gruß
Peter
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige