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

Datensatz kopieren dauert "ewig"

Forumthread: Datensatz kopieren dauert "ewig"

Datensatz kopieren dauert "ewig"
04.05.2003 17:24:53
Volker Croll
Hallo zusammen,

habe eine Arbeitsmappe erstellt mit der Artikelstammdaten verglichen und bearbeitet werden.

In Sheet1 werden aus einer Lieferantendatei alle lieferbaren Artikel eingelesen, in Sheet2 die bereits im Warenwirtschaftssystem vorhandenen Artikel dieses Lieferanten.

Danach werden datensatzweise die Artikel aus Sheet1 mit denen aus Sheet2 verglichen. Wenn dabei ein Artikel in Sheet2 nicht gefunden wird, also neu ist, wird dieser ins Sheet3 kopiert.

Wenn die Artikelnummer sowohl in Sheet1 als auch in Sheet2 vorhanden ist, werden alle Eintraege (28 zu jeden Artikel) verglichen. Werden dabei Abweichungen festgestellt, wird zunaechst der Datensatz aus Sheet1 ins Sheet4 kopiert, danach direkt darunter der entsprechende Datensatz aus Sheet2.

Im Einzelschrittmodus habe ich festgestellt, dass genau an dieser Stelle mein Problem sitzt. Aber nur wenn die Datei recht umfangreich ist (ca. 10 MB, 11.000 Datensaetze in Sheet1, 13.000 in Sheet2).

Dieses Kopieren dauert selbst auf einem 1,5 GHz PC bis zu einer Sekunde.

Wie ich kopiere, ob

Sh1.Range(Cells(Zeile1, 2), Cells(Zeile1, 29)).Copy
Sh4.Select
Cells(Zeile4, 2).PasteSpecial Paste:=xlValues

oder

Sh1.Range(Cells(Zeile1, 2), Cells(Zeile1, 29)).Copy Sh4.Cells(Zeile4, 2)

hat auf die Zeitdauer keine sruerbare Auswirkung.

Speicherproblem? Allerdings sind keine Festplattenzugriffe zu sehen.

Das Verhalten ist auf versch. PCs und sowohl unter Excel 97 also auch Excel 2000 das gleiche.

Hat jemand eine Idee?


Gruss Volker


Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Datensatz kopieren dauert "ewig"
04.05.2003 19:50:28
Karl

Hallo Volker,

bis zu einer Sekunde! hast du sonst keine Probleme?

Viele Grüße Karl

Karl, was soll das ...
04.05.2003 19:59:31
Volker Croll

Hallo Karl,

danke fuer Deinen sehr "konstruktiven" Beitrag.

Wenn Du Dir die Muehe gemacht haettest, intensiv zu lesen und Dich in das Problem hineinzudenken, dann waere Dir aufgefallen, dass
1. dieses Verhalten nur bei sehr grossen Dateien auftritt; und das muss ja wohl einen Grund haben, und
2. eine Sekunde pro Datensatz bei ueber 10.000 Artikeln (bei vielen Unterschieden) zur einer Laufzeit von ueber einer Stunde fuehrt.

Gruss Volker

Anzeige
Re: Datensatz kopieren dauert "ewig"
04.05.2003 20:13:28
Otto

Hallo Volker,

Ich habe verschiedene Ideen dazu.
1. Hast Du genügend RAM?
2. Enthalten die 29 Spalten der Zeile nur Werte oder Formeln?
3. Beim Erzeugen von Sheet3 und 4 musst du immer wieder Excel neu erzählen, dass das Blatt weiteren Speicherplatz braucht. Du blähst die Mappe allso in kleine Schritten auf 10 MB au. Genau diese Platz-Allokation und ggf. -Relokation braucht Zeit. Erzeuge Doch immer im Tausender-Pack neue Zeilen, in dem Du einfach vor dem Schreiben nach AC5000 die Zellen AC5000-AC5999 mit 0 füllst. und bei AC6000 die Zellen AC6000-6999 usw.

Gruß Otto


Anzeige
Re: Datensatz kopieren dauert "ewig"
04.05.2003 20:28:07
Volker Croll

Hallo Otto,

zu 1.: je nach Arbeitsplatz 128 oder 256 MB; duerfte wohl nicht die Ursache sein,

zu 2.: nur Werte; wohl auch nicht das Problem. Du dachtest wohl an's Neuberechnen,

zu 3.: das scheint mir ein interessanter Ansatz. Werde damit mal experimentieren.


Fuer's erste vielen Dank!

Gruss Volker

Anzeige
Re: Datensatz kopieren dauert "ewig"
04.05.2003 21:34:10
Ramses

Hallo Volker,,

Von hinten durch die Brust ins Auge.
Ich weiss nicht wie du die Daten vergleichst, das ist aus dem Code-Schnipsel leider nicht ersichtlich.

Eine Variante:
Beide Dateien in ein Array einzulesen, und dann die beiden Array's vergleichen.
Das ist sicher um einiges schneller asl der normale zeilenweise Vergleich.


Andere Variante:
Kopiere beide Daten zusammen in ein neues Tabellenblatt und lass den Spezialfilter ohne Duplikate drüberlaufen.
Dann hast du nur die Daten die einmal vorkommen und kannst diese kopieren.
Sollte um einiges schneller gehen, als Zeile für Zeile vergleichen.

Gruss Rainer


Anzeige
Danke, aber Vergleichen ist nicht das Problem ...
04.05.2003 22:20:43
Volker Croll

... das geht tierisch schnell.

Hallo Rainer,

das ganze ist Teil eines recht umfangreichen Projektes. Versuche es kurz, aber trotzdem verstaendlich zu machen.

Erst wenn Unterschiede gefunden werden, verzweige ich in den If-Teil. Und nur genau bei der angegebenen Zeile wird's langsam. Diese fast 1 Sekunde tritt sogar mit dem F8-Einzelschritt auf. Und das verstehe ich nicht.

Die beiden Datensaetze muessen untereinanderstehen, weil dort in mehreren Spalten bearbeitet wird, welcher Wert (der alte oder der neue) dann wieder ins WWS uebernommen wird.

Wie beschrieben tritt dieses Phaenomen nur auf, bei diesen vielen Datensaetzen. Wenn's nur so rund jeweils 1.000 sind, geht auch das kopieren schnell.

Gruebel, gruebel ... Gruss Volker


Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Datensatz kopieren in Excel optimieren


Schritt-für-Schritt-Anleitung

  1. Daten vorbereiten: Stelle sicher, dass die Daten in Sheet1 und Sheet2 gut strukturiert sind und nur benötigte Werte enthalten.

  2. Verbindung optimieren: Reduziere die Anzahl der Verbindungen zwischen den Blättern, um die Performance zu verbessern.

  3. Kopieren mit PasteSpecial: Verwende PasteSpecial nur für die Werte, um die Geschwindigkeit zu erhöhen:

    Sh1.Range(Cells(Zeile1, 2), Cells(Zeile1, 29)).Copy
    Sh4.Cells(Zeile4, 2).PasteSpecial Paste:=xlValues
  4. Daten in Arrays laden: Lade die Daten in Arrays und vergleiche sie dort, statt sie zeilenweise in Excel zu verarbeiten, um die Performance zu steigern.

  5. Schleifen effizient gestalten: Vermeide unnötige Schleifen, indem Du direkt mit den Arrays arbeitest.


Häufige Fehler und Lösungen

  • Lange Kopierzeiten: Wenn das Kopieren zu lange dauert, überprüfe den Arbeitsspeicher. Zu wenig RAM kann den Prozess erheblich verlangsamen.
  • Formeln in den Zellen: Stelle sicher, dass die Zellen nur Werte enthalten. Formeln können das Kopieren verlangsamen.
  • Datenmenge: Bei großen Datenmengen (über 10.000 Zeilen) kann Excel langsamer werden. Überlege, die Daten in kleineren Paketen zu verarbeiten.

Alternative Methoden

  • Verwendung von Filter: Kopiere beide Datensätze in ein neues Blatt und nutze den Spezialfilter, um Duplikate zu entfernen. Dies kann die Geschwindigkeit erhöhen.
  • Datenbanklösungen: Überlege, ob eine Datenbanklösung wie Access für dein Projekt besser geeignet ist, insbesondere bei großen Datenmengen.

Praktische Beispiele

  1. Beispiel für das Arbeiten mit Arrays:

    Dim arr1 As Variant
    Dim arr2 As Variant
    arr1 = Sh1.Range("A1:A10000").Value
    arr2 = Sh2.Range("A1:A10000").Value
    ' Vergleiche die Arrays hier
  2. Kopieren von Werten ohne Formate:

    Sh1.Range("A1:A10").Copy
    Sh4.Range("A1").PasteSpecial xlPasteValues

Tipps für Profis

  • Vermeide Bildschirmaktualisierungen: Schalte die Bildschirmaktualisierung aus, während Du Daten verarbeitest:
    Application.ScreenUpdating = False
  • Benutze Application.Calculation: Setze die Berechnung auf manuell, während der Datensatz bearbeitet wird:
    Application.Calculation = xlCalculationManual

FAQ: Häufige Fragen

1. Warum dauert das Kopieren von Datensätzen so lange?
Die Dauer kann von der Größe der Datei, der Anzahl der Formeln und der verfügbaren Hardware abhängen.

2. Welche Excel-Versionen sind betroffen?
Das Problem tritt in Excel 97 und Excel 2000 auf, kann aber auch in neueren Versionen auftreten, insbesondere bei großen Datenmengen.

3. Wie kann ich die Performance verbessern?
Verwende Arrays zum Vergleichen, reduziere die Bildschirmaktualisierung und arbeite nur mit Werten ohne Formate.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige