Thema Datum  Von Nutzer Rating
Antwort
18.07.2015 12:27:48 Simba
NotSolved
18.07.2015 14:58:49 Gast94581
NotSolved
19.07.2015 12:27:13 Simba
NotSolved
Blau Felder beschreiben und auslesen VBA/ Excel
19.07.2015 13:17:48 Gast62595
NotSolved

Ansicht des Beitrags:
Von:
Gast62595
Datum:
19.07.2015 13:17:48
Views:
813
Rating: Antwort:
  Ja
Thema:
Felder beschreiben und auslesen VBA/ Excel

>> Ich weiss beim besten Willen nicht was du meinst?! Die Elemente sind dem Array richtig zugeordnet,

Unter der Bedingung "[...] das Array auf einmal ausgeben [...]" Ist es dies nun halt nicht.

Sheets("Ergebnis").Range("A1:C6") = Matrix() 'das geht nicht, wäre aber das Ziel

Genau davon rede ich. Matrix ist ein verzweigtes Array und kein zweidim. (allgm. multdimensionales) Array, wie es Excel numal erwartet.

Deshalb funktioniert auch...

Sheets("Ergebnis").Range("A17:C22") = Matrix(2) 'gibt richtige Elemente zurück
Sheets("Ergebnis").Range("A17:C22") = Matrix(2) (1,2) 'geht z.B. auch

... weil das dann zweidim. (multidim.) Arrays liefert.

>> Befüllt man das selbe konstrukt mit 2 for Schleifen einzeln mit den Cells [, dann] dauert [es] zu lange

Auch logisch, weil hierbei jedesmal ein Feuerwerk an (verborgenen) Operationen im Hintergrund losgetreten wird.

Genau darum willst du ja den Weg über Arrays neben, da fallen nämlich genau diese weg; Schleifen hin oder her.

 

>> Copy Paste der einzelnen Ranges  ist hier leider viel langsamer, sind zig tausende Zeilen (mit hunderten Formeln), mehr Varianten kenne ich leider nicht die passen bzw anscheinend gar keine...

Genau hier greift z.B. eine der Mechanismen um die Laufzeit zu minimieren. Man deaktiviert die Neuberechnung. Nachdem alles an seinem Platz ist, aktiviert man sie wieder wodurch dann alles mit einem male berechnet wird, anstatt mehrere male doppelt und drölfzigfach wärend der Kopiererei zuvor.

Weiterhin bringt es auch enorm viel die Bildschirmaktualisierung vorübergehend zu deaktivieren.

 

Nochmal: Wenn du unabdingbar alles auf einmal kopieren willst, dann wirst du vorab ermitteln müssen wieviel Speicher (größe deiner zweidimensionalen Ausgabematrix) du benötigst. Wenn du also 50 Dateien hast, aus denen jeweils der Bereich A1:C1 (also 1x3) übernommen werden soll, dann brauchst du eine Ausgabematrix von 50x1x3 -> 50x3. In die schaufelst du dann die Daten hinein und dafür brauchst du dann final wieder eine Schleife - ganz ohne geht nicht.

 

Gruß


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
18.07.2015 12:27:48 Simba
NotSolved
18.07.2015 14:58:49 Gast94581
NotSolved
19.07.2015 12:27:13 Simba
NotSolved
Blau Felder beschreiben und auslesen VBA/ Excel
19.07.2015 13:17:48 Gast62595
NotSolved