Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
992to996
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
992to996
992to996
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zu viele Formeln - Tabelle langsam - was tun?

Zu viele Formeln - Tabelle langsam - was tun?
20.07.2008 16:55:00
M
Hallo zusammen,
ich habe mir eine recht umfangreiche Exceltabelle gestrickt. Hier ein paar Koordinaten dazu:
- 15 Tabellenblätte (vllt. kommt noch das eine oder andere Tabellenblatt dazu)
- in ca. 8 Tabellenblättern steht verweis/vergleich/ISTFEHLER Funktionen die mit Wenn-Funktionen verknüpft werden. über 310 Zeilen und 120 spalten (also 36.000 dieser Funktionen je Tabellenblatt)
- Es gibt ein Tabellenblatt - ich nenne es "Start", in dem über ein Makro Zeilen erzeugt werden, um Eingaben machen zu können, mit denen in den anderen Tabellenblättern die Berechnungen durchgeführt werden. Darüber hinaus werden über das "Start"-Tabellenblatt entsprechen der Eingaben auch Tabellenblätter erzeugt, in den die Ergebnisse aus der den Tabellenblättern mit den Wenn-Funktionen rein geschrieben werden und somit Auswertungen möglich sind.
Die ganze Exceltabelle ist jetzt aber höchst unperformat geworden, da das vermutlich alles zu viel für den Arbeitsspeicher ist. Wenn ich meine Eingaben in dem "Start"-Tabellenblatt mache und die Vorlagen für die Auswertung und die Eingaben erzeuge, dann dauert das mehr als 7 Minuten, was für die Arbeit mit der Tabelle eigentlich nicht zumutbar ist.
Hat von Euch hier jemand eine Idee, wie ich mit einfachen Mitteln abhilfe schaffen kann und die Performance der Tabelle steigern kann. Das ganze auf Datenbankbasis zu machen hatte ich mir auch schon überlegt funktioniert aber nicht so recht, da es hier auch Schnittstellen zu anderen Programmen gibt, die nur auf Excelbasieren. Zumindest was meinen Kenntnisstand dazu umfasst.
Über Hinweise und Hilfe würde ich mich sehr freuen.
Grüße,
Marc

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zu viele Formeln - Tabelle langsam - was tun?
20.07.2008 18:27:00
Martin
Hallo Marc,
Du kannst im Menü unter "Extras", "Optionen" auf dem Reiter "Berechnung" auf "Manuell" umstellen. Das hat den Vorteil, dass Excel nicht ständig im Hintergrund alle Formeln berechnet und somit wesentlich schneller ist. Sobald Du die Funktionstaste "F9" betätigst, berechnet Excel alle Formeln.
Eine zweite Möglichkeit bietet VBA. Ich habe auch eine sehr umfangreiche Exceltabelle und schreibe mit VBA alle Formeln in die Zellen und lassen anschließend die Formeln durch Ihre Werte ersetzen. Aber das wird Dir wahrscheinlich zu weit gehen!
Viele Grüße
Martin

Anzeige
AW: Zu viele Formeln - Tabelle langsam - was tun?
21.07.2008 10:32:55
Marc
Hallo,
danke für die vielen Hinweise - das Umstellen auf "manuelle Berechnung" scheint mir unter Beachtung meiner Excelfähigkeiten sinnvoll. Allerdings müssen regelmäßig Berechnungen durchgeführt werden. Insbesondere dann, wenn Werte geändert wurden. Da die Tabelle auch von Dritten verwendet werden soll, behinhaltet das "F9-drücken" als eine wesentliche Fehlerquelle. Interessant ist das, wenn ich dieses "F9-drücken" als VBA Code schreiben könnte und mit als Funktion in einen Button eingliedern kann. Ich nehme an, dass der Code von "oben nach unten" abgearbeitet wird. Ich habe da nämlich einen Button, mit dem weitere Tabellenblätter erzeugt werden und das dauert mit Abstand am längsten, da die Tabellenblätter bereits Formeln beinhalten, die wieder mit anderen Tabellenblättern verknüpft sind.
Es wäre nun meine Idee die Berechnung auf "manuell" umzustellen und am Ende des Codes des Button_Click als VBA-code "F9-drücken" einzufügen. Ist die Frage, ob das so funktioniert, oder ob der Code schneller durchläuft als die Tabellenblätter erzeugt werden!? Was meint ihr dazu und könnte mir evtl. jemand einen Hinweis geben, wie der VBA-code für "F9-drücken" sein kann. Alle Formeln als VBA-Code zu schreiben hat auch was für sich, allerdings weiß ich hier zum einen nicht wie ich eine Formel als VBA-Code schreibe zu anderen weiß ich nicht, wie ich in den VBA-Code einbinde, dass nach der Berechnung die Formeln aktualisiert werden sollen. Durch die Thematik mit der langsamen und schnellen Variante der Formeln bin ich noch nicht durchgestiegen. Ich habe das an einigen Tabellenblättern einmal exemplarisch durchgespielt, es scheint aber tatsächlich wesentlich komplizierter zu sein als zunächst gedacht.
Würde mich über weitere Hilfe sehr freuen.
Viele Grüße,
Marc

Anzeige
AW: Zu viele Formeln - Tabelle langsam - was tun?
21.07.2008 10:46:56
Martin
Hallo Marc,
der VBA-Code zum Rechnen lautet ganz einfach "Calculate". Das mit dem Button "Berechnen" geht problemlos.
VBA-Codes können auch Ereignisbasierend ausgelöst werden (Wenn sich Zelle ändert, Auswahl verändert, Blatt aktiviert/deaktiviert wird, Doppelklick, Rechtsklick, Öffnen/Schließen der Exceldatei usw.).
Mit "Extras" und "Makro aufzeichen" kannst Du Formeln in Excel schreiben und Dir anschließend ansehen, wie das ganze in VBA aussieht. Ich denke, dass Du recht schnell das Prinzip verstehen wirst.
Tipp: Zeichne die Funktionen im "Relativen Verweisen" auf.
Viele Grüße
Martin

Anzeige
AW: Zu viele Formeln - Tabelle langsam - was tun?
21.07.2008 11:58:14
Marc
Hallo Martin,
danke für den Hinweis, das scheint soweit alles prima zu funktionieren, die Tabelle ist damit auch wieder schön performant. Ein Problem habe ich allerdings noch, wenn ich in der Tabelle im Tabellenblatt 1 in einer Zelle einen Wert ändere, dann muss die ganze Tabelle sofort neu berechnet werden - gibt es eine Möglichkeit einzustellen, dass Excel bei Änderung des Wertes in dieser Zelle automatisch neu berechnet bzw. evtl. kann ich das auch als VBA-Code schreiben - wie müsste dieser dann aussehen!?
Danke und Gruß,
Marc

AW: Zu viele Formeln - Tabelle langsam - was tun?
21.07.2008 12:23:00
mpb
Hallo Marc,
wenn es sich um die Zelle A1 in Tabelle1 handelt, folgenden Code in das Klassenmodul dieser Tabelle kopieren:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
Worksheets("Tabelle1").Calculate
End If
End Sub


Gruß
Martin

Anzeige
AW: Zu viele Formeln - Tabelle langsam - was tun?
21.07.2008 13:23:00
Martin
Hallo Marc,
gehe in den VBA-Editor (Alt+F11) und klicke im VBA-Projekt Deiner Exceldatei im Ordner "Microsoft Excel Objekte" doppelt auf "DieseArbeitsmappe" und füge folgenden Code ein:

Private Sub Workbook_Open() 'Berechnung wird beim Öffnen der Datei auf Manuell gesetzt
Application.Calculation = xlCalculationManual
End Sub



Private Sub Workbook_BeforeClose(Cancel As Boolean) 'Berechnung wird beim Schließen der Datei  _
auf Automatisch gesetzt
Application.Calculation = xlCalculationAutomatic
End Sub



Private Sub Workbook_Activate() 'Berechnung wird beim Wechsel zu dieser Exceldatei auf Manuell  _
gesetzt
Application.Calculation = xlCalculationManual
End Sub



Private Sub Workbook_Deactivate() 'Berechnung wird beim Wechsel zu einer andern Exceldatei auf  _
Automatisch gesetzt
Application.Calculation = xlCalculationAutomatic
End Sub



Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
ActiveSheet.Calculate 'Bei Änderungen in Zellen wird das aktuelle Blatt neu berechnet
End Sub


Dann sollte alles wie gewünscht klappen!
Viele Grüße
Martin

Anzeige
AW: Zu viele Formeln - Tabelle langsam - was tun?
20.07.2008 20:15:29
Daniel
Hi
beim Umgang mit grossen Datenmengen kann man folgende Vorgehensweisen verwenden:
1. viele SVERWEISE in einer Zeile, die den gleichen Suchbegriff verwenden
hier kann es Sinnvoll sein, die Zeilen-Nr mit der Vergleichsfunktion zu ermitteln und die Daten dann mit der INDEX-Funktion aus der anderen Tabelle auszulesen. Dadurch wird die zeitaufwendige Vergleichsfunktion nur ein einer Spalte benötigt und nicht in vielen.
2. Formeln werden nur bei Datenaktualisierung benötigt
bei vielen SVerweisen ist es so, daß diese nur benötigt werden, wenn in der Quelldatei neue Daten ankommen.
Wenn dies nicht permanent, sondern nur in grösseren Zeitabständen passiert, kann es sinnvoll sein, die SVERWEIS-Formeln mit KOPIEREN und INHALTE EINFÜGEN - WERTE durch Werte zu ersetzen.
dadurch steigt die Verarbeitungsgeschwindigkeit enorm.
steht eine Datenaktualisierung an, müssen die Formeln wieder hergestellt werden, daß mache ich dadurch, daß ich die Formeln in der ersten Zeile stehen lasse, dann brauche ich sie nur per Mausklick nach unten kopieren.
die Wartezeit beim Daten aktualisieren bleibt dann zwar bestehen, aber das Normale Arbeiten mit den Daten geht wesentlich schneller (zusätzlich sollten, die Formeln noch an einer anderen Stelle gesichtet werden, denn manchmal vergiisst man, beim WERTE EINFÜGEN, die erste Datenzeile wegzulassen.
3. Schnellen SVERWEIS und VERGLEICH verwenden.
die beiden Funktionen haben 2 Varianten ,die über den letzen Parameter gesteuert werden (beim SVerweis der 4, beim Vergleich der 3.)
ist dieser =0 oder FALSCH, dann haben wir die langsame Variante, ist dieser =1 oder WAHR, dann haben wir die schnelle.
beim Arbeiten mit der Schnellen Variante muss man allerdings folgendes beachten:
- die Quelldaten müssen nach dem Suchbegriff (1. Spalte der Suchmatirx) aufsteigend sortiert sein.
- es gibt keine Fehlermeldung, wenn der Suchbegriff nicht gefunden wird, stattdessen wird der nächstkleinere Wert verwendet.
Sollte bei nicht vorhandenem Suchbegriff eine Fehlermeldung erforderlich sein, dann kann man dies Abbprufen, in dem man einen SVERWEIS auf die 1. Spalte der Suchmatrix durchführt und den Rückgabewert mit dem Suchbegriff vergleicht:

=Wenn(A1=SVerweis(A1;Tabelle2!A:D;1;1);SVerweis(A1;Tabelle2!A:D;3;1);"Nicht gefunden")


auch mit dieser Zusatzprüfung ist der Schnelle SVerweis dem langsamen deutlich überlegen und sollte bei grösseren Datenmengen auf jeden Fall verwendet werden.
Gruss, Daniel

Anzeige
Schneller SVERWEIS
21.07.2008 06:26:47
Erich
Hallo Daniel,
der schnelle SVERWEIS ist ja interessant. Wenn das Suchkriterium aber nicht aufsteigend sortiert ist,
scheidet der schnelle SV aber aus - habe ich das richtig verstanden?
mfg
Erich

AW: Schneller SVERWEIS - korrekt
21.07.2008 19:10:36
Daniel
Hi
ja so ist es.
allerdings ist der Geschwindigkeitsvorteil des schellen SVerweises einige Mühen wert.
ist im Prinzip das gleiche, wie in einem klassischem Telefonbuch:
Die Suche nach einem Namen entpricht dem schnellen SVerweis, die Suche nach einer Telefon-Nr entspricht dem langsamen SVerweis
Gruß, Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige