Automatisches Berechnen deaktivieren per VBA
#1
Hallo,

ich bin aktuell im Controlling Praktikum und erstelle eine Monatsauswertung in einem Verkehrsbetrieb.

Pro Monat und Standort (8 Standorte) kommen ca. 2200 Daten in der Endauswertung, die aus einem Datensatz von 8 Spalten mal ca. 10.000 Zeilen pro Monat generiert werden.

Trotz akzeptablem CPU (i5-7500) dauert nur das speichern ca. 15 Minuten und aktuell sind nur die Monate Januar bis April enthalten.

Per VBA wollte ich das Ganze so lösen:

Sub workbook_open()
Application.CalculateBeforeSave = False
Application.Calculation = xlCalculationManual

End Sub

Also Berechnung auf manuell und niemals beim speichern berechnen.

Anschießend möchte ich Buttons integrieren die nur gezielt einzelne Monate auf 8 Worksheets (je Standort eine Auswertung) berechnen. Das kommt jedoch später.

Leider funktioniert der Text per VBA nicht.


Mein Wunsch:

Alles ist fertig berechnet, ich drücke auf speichern, Excel berechnet nicht neu.

Excel soll am Ende nur rechnen wenn ein Button geklickt wird, diese Berechnung wird am Ende alleine ca. 10 Minuten dauern mit der hier vorhandenen Hardware.

Ich freue mich auf eure Hilfe

Marius
Top
#2
Hallo Marius,

zunächst würde ich die Datei auf Möglichkeiten zur Optimierung überprüfen. 15 Minuten Rechenzeit sprechen dafür, dass da nicht alles so toll gelöst ist.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Top
#3
Hallo Marius,

schau dir mal https://www.online-excel.de/excel/singsel_vba.php?f=79 an
Top
#4
Hallo Marius,

das Makro gehört in das schon vorhandene VBA-Modul DieseArbeitsmappe. Aber wie meine Vorschreiber schon bemerkten, ist es sinnvoller, die Ursache(n) dieser langen Berechnungszeit zu untersuchen.

Gruß Uwe
Top
#5
Hallo Marius,

warum stellst Du die Berechnung nicht auch auf manuell und hast mit dem "Button" F9 den Start der Berechnung?

Wenn Du in Deiner Datei z.B. monatlich kumulative Berechnungen hast, z.B. Ergebnis Januar, Ergebnis Januar bis Februar, Ergebnis Januar bis März oder irgendwas anderes, was Du nicht zu jedem neuen Monat neu berechnen müsstest weil sich da nix ändert, könntest Du die entsprechenden Formeln eventuell nach der Berechnung durch die Ergebnisse ersetzen.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#6
Hi,

bei einer kategorisierten Auswertung (z.B. nach "Monaten und Jahren" oder nach "Quartalen und Jahren" und nach Standorten, Typen oder sonstigen Kategorien gruppiert) fällt mir immer die PivotTable ein.
Dazu werden keine Formeln und Berechnungen benötigt.
Top
#7
(27.07.2018, 18:36)schauan schrieb: Hallo Marius,

warum stellst Du die Berechnung nicht auch auf manuell und hast mit dem "Button" F9 den Start der Berechnung?

Wenn Du in Deiner Datei z.B. monatlich kumulative Berechnungen hast, z.B. Ergebnis Januar, Ergebnis Januar bis Februar, Ergebnis Januar bis März oder irgendwas anderes, was Du nicht zu jedem neuen Monat neu berechnen müsstest weil sich da nix ändert, könntest Du die entsprechenden Formeln eventuell nach der Berechnung durch die Ergebnisse ersetzen.

Die Daten sollen bewusst dynamisch sein, sofern eine Berechnung angestoßen wird!

Die Daten kommen aus einer Pivot Tabelle (pro Monat ca. 10.000 Datensätze -> Buslinie / Busnummer / Entfernung)

Diese Datensätze werden durch eine Kopie der Werte in ein zweites Tabellenblatt eingefügt.

Anschließend werden diese Daten durch S-Verweise mit je 4 Merkmalen erweitern.
Dann greifen 8 weitere Tabellenblätter auf diese Daten zu (ein Tabellenblatt entspricht einem Unternehmensstandort)
Es werden in den 8 Tabellenblättern Abfragen mit Summewenns durchgeführt. Innerhalb des Standortes wird nach den Monaten unterschiedenen und jedem Monat werden alle Linien des Unternehmens 8x zugeordnet (je nach Abfrageergebnis, damit geguckt werden kann, wo z.B. Linienverkehr / Sonderverkehr gefahren wurde). Diese enthalten ebenfalls Summewenns Funktionen.

-> es ist eine umfangreiche Abfrage!

Und deswegen möchte ich mit VBA:

- einen Button, der gezielt z.B. nur eine Monatsberechnung anstößt, und sonst nichts berechnet -> also 12 Buttons.
- Excel soll nur rechnen, wenn dieser Button gedrückt wird (und für diesen Punkt brauche ich eure Hilfe!)


Vielen Dank

Marius
Top
#8
Moin!
Findest Du nicht auch, dass sich der Verkehrsbetrieb eine "echte" Datenbank zulegen sollte?
Zitat:Anschließend werden diese Daten durch S-Verweise mit je 4 Merkmalen erweitern.
Da wir die Datei und deren Aufbau immer noch nicht kennen, ist zielgerichtete Hilfe nicht möglich!
Nur so viel:
Der SVerweis() ist als Massenformel denkbar ungeeignet, vor allem in der FALSCH-Variante.
Besser ist jedenfalls:
Hilfsspalte mit der Fundzeile mittels VERGLEICH(;;1) also aufsteigend sortierter Suchspalte.
Ausgabe der verschiedenen Werte mittels INDEX(Suchmatrix;Fundzeile;Spalte_der_Fundzeile)

Dieser Aufbau kann bei 10.000 Zeilen * n Spalten mal locker 14 Min : 55 Sek Deiner 15 Min einsparen …

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#9
Moin,

ich werde das gleich mal testen!

Was mich sehr irritiert:
ich habe mittlerweile unter Optionen die Möglichkeit gefunden
Bei Optionen -> Formeln
"Vor dem Speichern die Arbeitsmappe neu berechnen"

Das habe ich ausgeschaltet und zusätzlich auf "Manuell" bei Berechnungsoptionen.

Meine Testarbeitsmappe:

in A1 steht summe(A2+A3), und in A2 und A3 zwei Zahlen. Ändere ich eine der Zahlen bleibt das Ergebnis unverändert, da auf Manuell.
Sobald ich speichere berechnet Excel mein Ergebnis neu.

Huh

.. ich gehe erstmal deine Lösung durch!
Top
#10
Noch mal, jetzt vielleicht etwas klarer:
Du hast fürchterliche Fußschmerzen und bittest einen Arzt per Telefon um die Zusendung eines starken Schmerzmittels.
Würdest Du zu ihm hinfahren, könnte er Dir den Schuh ausziehen, mal nachsehen und den blöden Stein entfernen!
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste