PDA

Vollständige Version anzeigen : Datei wird extrem groß und langsam bei Berechnungen


sowosamma
20.07.2012, 07:55
Hallo zusammen,

ich habe ein Problem bei einer Excel-Datei (Version 2003). Über eine Schnittstelle (per AddIn) ziehe ich mir für 50 Produkte tägliche Preise. Aktuell sind das knapp 3500 Zeilen.

Spalte A: Datum
Spalte B-AY: Produkt 1-50

In den Spalten BA-CX lasse ich mir die nur die Freitagspreise per Formel anzeigen. Beispiel:
=WENN(UND(WOCHENTAG($A3280)=6;ISTZAHL(AY3280));AY3280;"")

In den Spalten CZ-EW bilde ich die Summe der letzten 26 Wochenschlusspreise. Beispiel:
=WENN(ANZAHL(CX$11:CX3276)<26;"";WENN(UND(CX3276="";CX3275<>"");SUMME(CX3150:CX3275);EW3275))

In den Spalten EZ-GW wird dann der Durchschnitt aus Tagespreis + 26-Wochensumme berechnet. Beispiel:
=WENN(ISTZAHL(EW3281);(AY3281+EW3281)/27;"")

Ergebnis die Datei ist über 60MB groß (zum Vergleich: Nach dem laden der Daten, also vor den Formeln war sie rund 2MB groß) und ich habe permanent "Berechnen" in der Statusleiste. Und nein, "Automatisches Berechnen" ist nicht deaktivert. Sobald ich eine Zelle mit Enter bestätige dauern die Berechnungen ca. 5-10 und trotzdem steht "Berechnen" am Ende in der Statusleiste.

Es kann doch nicht sein, dass EIN Arbeitsblatt welches nur zu ca. 1/20 befüllt (3500 von 65000 Zeilen) ist, Excel bereits an seine Grenzen bringt. Kann man die Formeln schlanker machen? Und bringt das was?

Pit987
20.07.2012, 09:01
Hallo!
Ich habe gerade nachgeschaut.
Meine Datei mit 3500 Datensätzen ist 3MB groß. Eingaben gehen ohne Zeitverzögerung. Nur das Speichern dauert ca. 10-15 sec.

Obergrenzen für Excel (bedingte Formatierungen etc) sind hardwareabhängig. Excel 2003 könnte noch XP sein, dann wäre der Windowsspeicher ebenfalls begrenzt.

Deine Formeln sehen nicht sehr aufwendig aus.

Daher vermute ich, es liegt am Input. Eventuell werden dort Formate, Bilder, Links oder HTML mitkopiert.

Vorschlag: Kopiere jedes Tabellenblatt mit Kopieren-Inhalte einfügen-Werte
in eine neue Datei. Kontrolliere die Dateigröße

Kopiere eine Formel pro Spalte aus der Orginaldatei mit Kopieren-Inhalte einfügen-Formel und dann in der zweiten Datei die Formel auf die gesamten Datensätze kopieren. Kontrolliere die Größe.

Wenn es so klappt würde ich den Input über Schnittstelle in eine gesonderte Datei machen und dann die Werte in die Auswertungsdatei kopieren.

Viel Erfolg
Pit

sowosamma
20.07.2012, 10:26
Hallo Pit,

ich habe es mal nach Deinem Vorschlag gemacht.

Die Datei mit Werten hat 7,8 MB (3500 Teilen belegt zwischen A und GZ). Kopiere ich die Formeln (mit Inhalte einfügen) für den ersten Teil wird sie schon 16,5 MB, die Berechnungen sind aber noch zügig. Mit dem zweiten Block werden es schon 34,2 MB und es wird langsamer und beim dritten Block bin ich dann bei 42,1 MB und es wird sehr langsam.
Das Problem mit dem permanenten Berechnen in der Statuszeile ist zwar weg, aber trotzdem ist die Datei nicht mehr "anwenderfreundlich".
Ich denke dass Problem ist, dass in sehr vielen Zellen Wenn-Dann-Formeln stehen und meißt (Mo-Do) nur leer als Ergebnis kommt.

Ich werde mal versuchen die Wenn-Dann-Logik mit VBA aufzubauen und nur denn Dann-Teil als Formel eintragen. Mal schauen ob's dann kleiner und vor allem schneller wird.

Pit987
20.07.2012, 10:57
Hallo!
Wäre ein Makro, welches alle Datensätze mit Mo - Do löscht, eine Möglichkeit?
Wenn es bei Mo-Do um Not- oder Wochenenddienst geht, vergesse die Feiertage nicht.

Weitere Möglichkeiten
Ramspeicher und Festplattenspeicher aufrüsten.
Cache für Anwendung optimieren
Geladene Autostartprogramme oder Dienste abschalten

Viel Erfolg
Pit

sowosamma
20.07.2012, 15:09
Hi Pit,

nein geht leider nicht. Weil ich täglich den Durchschnitt aus Tagespreis + x-Wochenschlusspreis bilden muss.

Mit VBA hat's aber ganz gut funktioniert. Die ganzen Wenn-Bedingungen habe ich VBA überlassen und nur die Formel in die entsprechenden Zellen eintragen lassen. Ergebnis: Die Datei ist nur noch 11 MB groß und die Berechnungen laufen flüssig.

Trotzdem danke für den Gedankenaustausch!