Registriert seit: 22.04.2016
Version(en): 2016
Guten Morgen Leute!
Ich sitze momentan vor einer riesigen Datei, welche durch diverse Verweise auf andere Dokumente eine relativ große Dateigröße besitzt.
Ziel ist es die Datei ein wenig zu "optimieren". Das einzige welches ich bisher kennengelernt habe, ist die Berechnungsoptionen auf manuell zu stellen.
Ein zweiter Ansatz könnte folgendermaßen aufgebaut werden, die Frage ist nur dies wirklich die Performance erhöhen lässt.
Ich lasse mittels Workbook_Open eine Userform beim Öffnen der Datei aufploppen, welche mir die Tabellen auflistet, welche vorhanden sind und der Anwender nur noch auswählt, welche er betrachten möchte.
Die restlichen Tabellen werden ausgeblendet und jeweils die Berechnungsoptionen auf manuell gesetzt.
Was sagt ihr zu diesem Ansatz?
Registriert seit: 11.03.2015
Version(en): mittlerweile meistens 2019
Hallo Joshua,
ich glaube nicht, dass das simple ausblenden von Tabellen eine Gescheindigkeitsverbesserung bringt.
Ich kenne zwar Deine Datei nicht, würde aber vermuten, dass viele Berechnungen/Formeln verwendet werden. Hier könnte man theoretisch ansetzen und diese ggf. optimieren.
Zudem wäre Power Query eine weitere Möglichkeit um die externen Daten zu "verwalten".
Gruß
Michael
Registriert seit: 22.04.2016
Version(en): 2016
Vielen Dank für deine Antwort.
PowerQuery ist leider für dieses Dokument nicht hilfreichend. bzw. mine Kentnisse würden nicht ausreichen. Ziel ist es auch ohne PowerQuery und Pivot auszukommen.
Naja, es geht nicht nur ums ausblenden, sondern ebenfalls um die Berechnungsoptionen.
Alles ausgeblendeten werden entsprechend auch auf manuell gesetzt.
Hätte dies tatächlich kieine performante Steigerung?
Registriert seit: 06.11.2017
Version(en): 2013
Servus Joshua,
wie Michael schon schreibt, könnte eine Optimierung Deiner Formeln schon enorme Performance bringen.
Auch könnte man darüber nachdenken, die ein oder andere Formel durch ein VBA-Script zu ersetzen. Ein gute VBA Programmierung kann um ein zigfaches schneller sein, als die Verwendung von herkömmlichen Formeln.
Aber Deine Idee, die automatische Formelberechnung auszuschalten, hat auch etwas. Hier solltest Du jedoch nach folgendem Schema vorgehen.
Zunächst die automatische Formelberechnung für die Application ausschalten
Danach die Berechnung der einzelnen Tabellenblätter ausschalten.
Nun die Berechnung der Application wieder auf automatisch setzen.
Erst jetzt solltest Du die Berechnung einzelnen (ausgewählter) Tabellenblätter wieder anschalten.
Ein kleines Beispiel:
Code:
Private Sub Workbook_Open()
Dim WS As Worksheet
Application.Calculation = xlCalculationManual
For Each WS In ThisWorkbook.Worksheets
WS.EnableCalculation = False
Next WS
Application.Calculation = xlCalculationAutomatic
ThisWorkbook.Worksheets("Tabelle1").EnableCalculation = True
Set WS = Nothing
End Sub
LG Gerd
Registriert seit: 22.04.2016
Version(en): 2016
Hallo Gerd.
Vielen Dank für dein Konzept!
Wie schaut die Berechnungsoption nach dem Schließen der Datei aus?
Mit "Application.Calculation = xlCalculationAutomatic" umgehe ich die Problematik, dass Excel die Berechnungsoptionen nur projektweit und nicht global setzt, richtig?
Gruß
Registriert seit: 06.11.2017
Version(en): 2013
Ja, genau so ist es. Aber teste mal selbst!
LG Gerd