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

Eure Erfahrung: Copy/Paste use vermeiden, beste Ideen?

Eure Erfahrung: Copy/Paste use vermeiden, beste Ideen?
03.02.2024 12:31:55
Frank Dreier
Hallo Leute,

Ich weiß zwar eine Lösung, wollte aber mal fragen ob Ihr noch andere Ideen habt oder welche Bordmittel Excel hier noch mitbringt.

Ich würde gerne ohne den Zwischenspeicher arbeiten beim kopieren von Zellen in Excel. (Dieser wird anderweitig verwendet, falls jemand das wissen will...)

Hier mal meine Ideen (Beispiel Übertragung 200000 Zellen von einem Bereich in den anderen), vielleicht habt Ihr noch bessere Ideen:

Range("G1:J50000").Value = Range("A1:D50000").Value (Dauer der Operation: 0.33 Sekunden)

(kann mir einer erklären wie Excel hier ohne Zwischenspeicher arbeiten/auskommen kann, also rein technisch betrachtet? Weiß das jemand? Also was passiert hier hinter dem Code? Wie kann Excel hier trotzdem den Wert übertragen? Weiß das jemand?)

Hier zum Vergleich die standard-copy Funktion mit Zwischenspeichernutzung: (Dauer der Operation: 0.04 Sekunden)

Range("A1:D50000").Copy
Range("G1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Man sieht also, dass ohne Zwischenspeicher das Einfügen bei 50000 x 4 Spalten fast 8 mal so lange dauert wie bei der "Zwischenspeicher" Copy Funktion.
Das kann bei Operationen wo dies gerademal 100 Mal geschehen soll bis zu 0.29 Sek * 100 = 29 Sekunden ausmachen.

Ich finde das recht arg. Habt Ihr noch eine andere Idee? Hat Excel da noch andere Möglichkeiten,- wie gesagt, ohne Zwischenspeichernutzung?

Vielen Dank

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eure Erfahrung: Copy/Paste use vermeiden, beste Ideen?
03.02.2024 12:54:49
Alwin Weisangler
Hallo Frank,

teste mal Folgendes:
Lade den Range in ein Array :
arr=Range("G1:J50000").Value
und schreibe das Array in den Zielbereich:
Range("A1").Resize(UBound(arr,1), UBound(arr,2)) = arr
Ob es schneller geht weiß ich nicht.

Gruß Uwe
AW: Eure Erfahrung: Copy/Paste use vermeiden, beste Ideen?
03.02.2024 13:10:02
onur
Lass mal die blöden (und völlig überflüssigen) .Value´s weg und schau, was passiert.
AW: Eure Erfahrung: Copy/Paste use vermeiden, beste Ideen?
03.02.2024 13:14:26
onur
Ausserdem:
statt
Range("A1:D50000").Copy

Range("G1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False


reicht völlig
Range("G1:J50000").Copy Range("A1:D50000")
Anzeige
AW: Eure Erfahrung: Copy/Paste use vermeiden, beste Ideen?
03.02.2024 13:22:39
onur
Natürlich genau umgekehrt! :)
AW: Eure Erfahrung: Copy/Paste use vermeiden, beste Ideen?
04.02.2024 20:37:21
Pappawinni
Range("G1:J50000").Copy Range("A1")

würde es auch tun.
AW: Eure Erfahrung: Copy/Paste use vermeiden, beste Ideen?
07.02.2024 08:29:08
schauan
Hallo Frank,

mal noch was aus der Historie. Excel (32 bit) hat sich mit der Speichernutzung über die Jahre nicht gerade zum Vorteil entwickelt. Ich habe seit 97 ein Projekt betreut, bei dem viel kopiert wurde. Es ging um die Auswertung von Messergebnissen von Einzelteilen und Baugruppen, wo anfangs maximal so ca. 50-60 Dateien mit jeweils bis zu a. 30 Diagrammen ja Blatt für größere Baugruppen beteiligt waren - ich bezeichne das mal als einen Berechnungsauftrag für eine Baugruppe. Insgesamt kamen damals so etwa 1500 bis 2000 Dateien zusammen.
Im Blatt gab es zwei Kopiervorgänge. Zum einen wurden die Diagramme aus einer Vorlage kopiert, zum anderen wurden für Anwender ohne Excel oder UNIX-Systeme die Blätter als Bild gespeichert - also Darstellungsbereich kopiert, in ein Chart eingefügt und selbiges einmal in A4 und einmal klein als Vorschaugrafik für ein html-Inhaltsverzeichnis gespeichert.
System war Anfangs Windows NT und Excel 97.
Excel wurde früh von den Anwendern gestartet, es konnte alles berechnet werden. Dateien wurden geöffnet, aktualisiert, geschlossen, Excel blieb geöffnet.
Über die Jahre wurden die Produkte mehr und die Analysen je Baugruppe umfangreicher. Ein Berechnungsauftrag konnte dann auch über 100 Dateien enthalten, insgesamt so um die 8000 Dateien.

Allerdings ging das nicht mehr in einem Rutsch. Die Aufträge mussten zuletzt auf ca. 40 -45 Dateien reduziert werden, also deutlich weniger als früher mit 97 unter NT - und auch noch unter XP - da war Office XP und auch 2003 im Einsatz - wobei bereits bei 2003 auch nicht mehr alles gut ging. Zudem musste Excel zumindest bei 2010 / W10 nach jedem entsprechend großen Auftrag beendet und neu gestartet werden.

Problem: Beim Kopieren - hier durchs Erzeugen der Bilddateien - hat, wie Du auch festgestellt hast, Excel immer mehr Speicher belegt.
Unter alten Versionen wurde da anscheinend deutlich mehr Speicher beim Schließen der Dateien freigegeben. Bei neueren Versionen ist das nur minimal - sieht man dann ja bei der Speicherauslastung :-(





Anzeige
Uwe auch 0.33 Sekunden via Array :), ExcelSpeicher killen?
03.02.2024 13:06:12
Frank Dreier
Hallo Uwe!

Danke für den Versuch. Excel scheint hier die gleiche Operation anzuwenden

arr=Range("G1:J50000").Value
Range("A1").Resize(UBound(arr,1), UBound(arr,2)) = arr (Dauer: 0.33 Sekunden)

wie bei

Range("G1:J50000").Value = Range("A1:D50000").Value (Dauer: 0.33 Sekunden)

Ich frage mich halt wo Excel dann diese Range G1:J50000 also "arr" (Array) zwischenspeichert wenn nicht im Standard-Zwischenspeicher. Aber wahrscheinlich nutzt Excel dafür einen internen Speicher den nur Excel in dem Augenblick verwenden kann.
Mal gucken ob ich den Internen Excel Speicher (sofern meine Annahme richtig ist) sprengen kann mit einer simplen Anweisung, dann wüsste man nämlich auch wie groß dieser ungefähr ist. Mein Ergebnis präsentiere ich hier. Man sieht auch ob Excel sich aufbläht bei Nutzung des "internen" Speichers durch den Taskmanager. Spannend!
Anzeige
Excel verwendet eigenen Zwischenspeicher, hier das Limit:
03.02.2024 13:23:22
Frank Dreier
Hallo Uwe und Spezialisten:

Also Excel scheint bei Direktzuweisung den eigenen, internen Speicher bis zum Limit zu benutzen (das liegt bei mir immer bei ca. 1,2 GB im Taskmanager).

Man kann die Excel-Interne Speichernutzung im Augenblick der Direktzuweisung erkennen im Task-Manager durch eine Schleife oder ständiges Wiederholen des Makros (also permanentes Klicken auf das Makro).

Falls Ihr Excel mal zum Absturz bringen wollt, sollte diese Codezeile reichen (hat bei mir funktioniert):

Range("G1:AA500000").Value = Range("A1:AA500000").Value

Hier muss Excel mehr als 1 GB an internem Speicher verwenden für die Direktzuweisung und arbeitet sich zu Tode/stürzt ab.

Vielen Dank erstmal bis hierhin!
Anzeige
Onur's Lösung funktioniert leider nicht:
03.02.2024 13:33:46
Frank Dreier
Onur hatte die Idee die .value wegzulassen, also nur:

Range("G1:J50000") = Range("A1:D50000")

Damit werden leider nur die Zellen ohne Inhalt kopiert. Setzen wir anstatt

Range("G1:J50000") = Range("A1:D50000").Value

wird zwar alles wieder kopiert, aber wir landen trotzdem bei 0.33 Sekunden wieder am Ende.

Danke für die Idee!
AW: Onur's Lösung funktioniert leider nicht:
03.02.2024 13:42:59
onur
Du hast Recht, ich hätte es zuvor (mit Zellinhalten) testen sollen. Peinlich. :)
AW: Excel verwendet eigenen Zwischenspeicher, hier das Limit:
03.02.2024 13:27:13
onur
Keine Ahnung, was DU für einen Rechner hast, aber meiner braucht 4,9 sec dafür. Und ohne die blöden .Value´s nur 1,70 sec.
Onur: Liegt es an Deiner Excel-Version?
03.02.2024 13:37:45
Frank Dreier
Hallo Onur,

also wenn ich mich richtig erinnere wurde der interne Speicher seit Excel 2007 nicht mehr vergrößert. Aber vielleicht ist das ein Irrtum!!
Ich Excel 2007, Du Excel >=2013 wenn ich mich richtig erinnere.

Das würde den Unterschied erklären. Mein Prozessor ist ca. 35% langsamer als der schnellste Prozessor den Du aktuell kaufen kannst. Daran sollte es also nicht liegen. Interessant, dass Du nur so kurz dafür benötigtst.

Bin jetzt erstmal weg, muss arbeiten, Lieben Gruß an alle
Anzeige
AW: Onur: Liegt es an Deiner Excel-Version?
03.02.2024 13:47:48
onur
Wo GENAU siehst du denn im Taskmanager deine 1,2 GB Speicher?
AW: Onur: Liegt es an Deiner Excel-Version?
03.02.2024 13:57:45
onur
Du meinst doch nicht das hier - oder ?
Userbild
Arbeitsspeicherplatz Excel-Datei
03.02.2024 22:11:07
Frank Dreier
Hallo Onur,

wenn ich auf Prozesse gehe, kann ich EXCEL.EXE*32 (in meinem Fall) sehen und belegt bei neu geöffneter Arbeitsmappe ohne Inhalt ca. 20.000 K (20 MB).
Wenn ich nun Range("G1:J50000") = Range("A1:D50000").Value durchlaufen lassen springt dies kurz um 5000K auf 25000k rauf.

Bei Range("G1:DA500000") = Range("A1:DA500000").Value springt Excel dann auf die Grenze von 1200.000 K (1,2 GB) und stürzt ab.
Ich selber habe 16 GB Arbeitsspeicher. Diese Excel-interne Speicherbenutzungsgrenze habe ich schon oft beobachtet. Da ist dann Schluss. Hier ist nun die Frage ob bei Deinem, neueren Excel eine höhere Grenze erreicht werden kann. Damit hätte dann Excel neuer als 2007 eine wirklich größere Speichergrenze bekommen und dann sollte ich wirklich wechseln.

Ich mache dazu nochmal einen eigenen Faden auf. Da sich sonst keiner mehr gemeldet hat, gehe ich davon aus, dass die Direktzuweisung die beste Lösung ist Daten ohne Zwischenspeicher zu kopieren.
Anzeige
AW: Arbeitsspeicherplatz Excel-Datei
04.02.2024 00:53:39
onur
Dazu hab ich dir doch 03.02.2024 13:27:13 schon geantwortet.
Nochmal: Nix mit Absturz bei mir - 4,7 sec Durchlaufszeit (Excel365, 32 GB, Windows 11 Home, Intel(R) Core(TM) i7-12700H).
Und ebenso nochmal: Was hast du für ein Betriebssystem ? 64 oder 32 Bit ?
AW: Arbeitsspeicherplatz Excel-Datei
04.02.2024 08:29:35
Eifeljoi 5
Hallo

Ich persönlich halte überhaupt nix von kopieren, in fast allen Fällen sogar völlig überflüssig.
Gib deinem Asbach Uraltem Excel endlich die Rente und nutze dann PQ.
AW: Excel verwendet eigenen Zwischenspeicher, hier das Limit:
03.02.2024 13:28:52
onur
Kein Wunder bei 1,2 GB - Hast du nur 4 GB? Und 64 BIT ?

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige