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

Forumthread: In welcher Reihenfolge berechnet Excel Formeln?

In welcher Reihenfolge berechnet Excel Formeln?
07.01.2017 04:33:33
Rainer
Hallo Excelfreunde,
Hier hatte ich geschrieben:
https://www.herber.de/cgi-bin/callthread.pl?index=1531199#1531199
Obwohl die Zelle "am Ende" der Matrix steht, wird sie dennoch zuerst berechnet. Also die Zelle  _
ist aktualisiert, aber der Rest der Berechnungnen nicht, wenn man während der Berechnung klickt und die Berechnung damit abbricht.
Kurios.
Das Problem wird noch kurioser, bzw. macht mich wahnsinnig.
Es gibt 2 Blätter, "Coil" und "Matrix". In Blatt 1 trage ich Positionswerte ein. In dem zweiten _ Blatt steht dann z.B. in C5

=INDIREKT("coil!"&$B5&C$4) 
, wobei B5 der Spaltenbuchstabe ist und C4 die Spaltennummer im ersten Tabellenblatt.
Anhand dieser Angabe finden in der Spalte C weitere Berechnungen und Vergleiche statt. Die Funktionen hier sind TEXT(), WENN(), UND(), ZÄHLENWENN(). Es gibt 4001 Zellen in dieser Spalte mit Berechnungen basierend auf der Positionsangabe in C5.
Starte ich nun die Berechnung des Tabellenblattes "Matrix", dann ist es so, dass die ganze restliche Spalte C schneller berechnet wird als die INDEX() Funktion in Zelle C5.
Ich denke nun, das ich die INDEX() Funktion in ein Makro stecke und ausführe bevor das Blatt "Matrix" neu berechnet wird.
Aber die eigentliche Frage ist eher theoretischer Natur: nach welchen Kriterien legt Excel fest, welche Zellen in einem Blatt zuerst berechnet werden? Nur nach der Rechenzeit der einzelnen Formeln, d.h. alle Berechnungen werden gleichzeitig angestoßen und wer zuerst fertig ist gewinnt?
Wie schon gesagt, für mich ist das sehr kurios.
Viele Grüße,
Rainer
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: In welcher Reihenfolge berechnet Excel Formeln?
07.01.2017 09:13:57
fcs
Hallo Rainer,
bei einer kompletten Neuberechnung arbeitet Excel meines Wissens die Formeln zeilenweise von links nach rechts und von oben nach unten ab.
Durch iterative Berechnungen des Tabellenblatts wird das Ergebnis ermittelt, wenn Zellen mit Formeln verschachtelt sind oder die Zellen mit Formeln nicht in dieser Reihenfolge stehen.
Bei Änderung einer einzelnen Zelle arbeitet sich Excel rückwärts durch alle Formeln die die Eingabezelle verwenden sowie alle von den Zellen mit den Formeln abhängigen Formeln.
Bei Matrix-Formeln und Formeln, die Zellbereiche als Parameter haben wird dann oft immer eine Lawine von Berechnungen angestoßen.
Wenn du innerhalb eines Makros Probleme mit der Performance hast, dann ist es meist erfolgteich,den Berechnungmodus vorübergehend auf manuell zu setzen
Application.Calculation = xlCalculationManual
Mit
Application.Calculate
kann man dann zum passenden Zeitpunkt eine komplette Neuberechnung durchführen.
Falls sinnvoll kann die Neuberechnung auch auf einen Zellbereich oder ein Tabellenblatt beschränkt werden.
Worksheets("Blattname").Calculate
bzw.
Worksheets("Blattname").Range("C1:C30").Calculate
Am Ende des Makros setzt man dann den Berechnungsmodus wieder auf den gewünschten wert.
LG
Franz
Anzeige
AW: In welcher Reihenfolge berechnet Excel Formeln?
07.01.2017 09:36:05
Rainer
Hallo Franz,
bei einer kompletten Neuberechnung arbeitet Excel meines Wissens die Formeln zeilenweise von links nach rechts und von oben nach unten ab.
Genau so dachte ich es mir ja auch! Aber ich habe "ganz rechts unten" in der Matrix die _ einfachste Berechnung stehen, nämlich

"=Coil!Z61"
. Das ist eine Zufallszahl, die VOR dem Berechnen der Matrix neu erzeugt wird. Gemäß der Logik sollte also die Zelle "ganz rechts unten" zuallerletzt gefüllt werden. Aber meine Erfahrung zeigt, dass sie stets zuerst verrechnet wird. Ich wollte damit kontrollieren, ob denn alles berechnet ist, aber so einfach ging es nicht.
 Application.Calculation = xlCalculationManual
Das habe ich schon so implementiert. Die Matrix ist elend groß, wenn das auf "Auto" rechnet wird man wahnsinnig.
Mit Hilfe von Werner habe ich eine Userform drübergebaut, dass auch während der Berechnung nichts verändert werden kann oder jemand die Berechnung abbricht.
Das klappt auch super, nur leider werden eben die INDEX() Formeln zuletzt verrechnet, so dass ich den Commandbutton "Berechne die Matrix" 2 mal drücken muss. Dann hat er vom vorherigen Durchlauf die richtigen Werte drinstehen.
Wie gesagt, ich werde die INDIREKT() Funktion noch mit ins Makro stecken.
Ich war nur neugierig auf die Abfolge mit der Excel sich durch meine Formeln kaut.
Der Fairness halber sei noch gesagt, dass das Tabellenblatt nur "Matrix" heißt, aber keine {Matrixformel} enthält. Nur die schon erwähnten TEXT(), WENN(), UND(), ZÄHLENWENN(), INDEX(), MIN(), MAX() und INDIREKT().
Gruß,
Rainer
Anzeige
AW: In welcher Reihenfolge berechnet Excel Formeln?
07.01.2017 11:22:16
fcs
Hallo Rainer,
die Funktion
ZÄHLENWENN(), INDEX(), MIN(), MAX()
haben jedoch Zellbereiche als Parameter und sind im Prinzip auch Matrixformeln - eben integrierte Matrixformeln.
Bei entsprechend "unglücklicher" Struktur der Formeln und Bereiche wird Excel dann bei der Berechnng narrisch.
"=Coil!Z61"
. Das ist eine Zufallszahl, die VOR dem Berechnen der Matrix neu erzeugt wird. ...

Hier ist dann die Frage wann die Zufallszahl berechnet wird und ob dann das Ergebnis in Coil!Z61 direkt in der Zelle mit der Formel berechnet wird. Excels Wege können schon verschlungen sein.
LG
Franz
Anzeige
Unterschiedl. XLVersionen mit versch. Reihenfolgen
08.01.2017 20:47:42
lupo1
... sind nachgewiesen!
xl2000 berechnete z.B. Tabellenblätter in alphabetischer Reihenfolge mit eigenen Bäumen!
Danach gab es nur einen Baum. Wie es jetzt ist, keine Ahnung!
Achtung: Mehrprozessor-Systeme in Verbindung mit dem richtigen Excel und Windows können u.U. Aufgaben aufteilen und damit eben auch die Reihenfolge ändern.
Abhilfe für ALLE Excelversionen gleichermaßen:
Lasse VBA alle Formeln in der Rechenreihenfolge in die Zellen schreiben!
Anzeige
AW: Unterschiedl. XLVersionen mit versch. Reihenfolgen
09.01.2017 06:19:04
Rainer

Das ist eine Zufallszahl, die VOR dem Berechnen der Matrix neu erzeugt wird. ...
Hier ist dann die Frage wann die Zufallszahl berechnet wird und ob dann das Ergebnis in Coil!Z61 direkt in der Zelle mit der Formel berechnet wird. Excels Wege können schon verschlungen sein.
Hallo Franz, die Zufahlszahl wird vom Comandbutton berechnet:
Range("z61") = Int((999 * Rnd) + 1)
Call update
"Update" startet dann die Berechnungen der Matrix.
Hallo Lupo1,
danke für den Hinweis. Also doch kurios und ohne erkenntliche Logik ala "Von oben links nach unten rechts". Ich werde es durch VBA auslösen lassen mit Franz Vorschlag:
 Worksheets("Blattname").Range("C1:C30").Calculate
So kann ich die verschiedenen Bereiche genau festlegen in ihrer Berechnungsreihenfolge. Ich gönne mir aber noch die Faulheit, die 1.2Mio Formeln in Schleifen zu verpacken und komplett in VBA zu schreiben. Das wäre mit Sicherheit die sauberste Lösung, aber es macht Modifikationen an den Berechnungsformeln aufwändiger für Nicht-VBA-Excel-Nutzer (so wie ich selbst vor wenigen Wochen...).
Vielen Dank und viele Grüße,
Rainer
Anzeige
Och, dann lohnt sich das ja so richtig ;)
09.01.2017 09:35:30
lupo1
Dann schreibe doch gleich in der richtigen Reihenfolge jeweils die Werte statt der Formeln in die Zellen. Spart viel Platz und sorgt für Schnelligkeit.
Du kannst am Ende dann alle diese Formeln auch löschen. Dann lädt die Tabelle wie ein Blitz - und speichert extrem klein. Allerdings muss das Makro dann einmal nach Öffnen laufen. Daher möglicherweise optional vorsehen.
"Ohne erkenntliche Logik": Das würde ich nicht so sagen. Aber was bitte darf ein Mehrprozessorsystem denn nun mal eigenmächtig machen? Doch wohl wenigstens feststellen, wo Dinge gleichzeitig gemacht werden dürfen, oder?
Anzeige
Schleifen? Nein ...
09.01.2017 09:43:03
lupo1
Range("B1:B999999") = "=RC[-1]^2"
macht es Dir auch ohne Schleife. Und so wird es bei ordentlichem Design überall gehen, mit viel kürzerem Code und - bitte! - ohne Einzelzuweisungen und ohne Kopieren.
Das ist übrigens die Knaller-Anwendung für die R1C1-Schreibweise schlechthin! Nicht nur international, sondern auch noch "vektoriell relativ" statt nur "statisch relativ".
Anzeige
AW: Schleifen? Nein ...
09.01.2017 10:11:11
Rainer
Hallo Lupo,
ist es schlimm wenn ich nicht mehr folgen kann? ;-)
Oder liegt es an dem fehlenden Wörtchen "nicht"?
Ich gönne mir aber noch die Faulheit, die 1.2Mio Formeln nicht in Schleifen zu verpacken und komplett in VBA zu schreiben.
Die Formeln werden am Ende übrigens auch gelöscht, darum gibt es ja ein seperates Blatt "matrix". Einmal durchrechnen, Ergebnisse zurück nach Blatt1 kopieren und weg mit der riesigen Formelsammlung.
"Ohne erkenntliche Logik" meinte eben für mich, dass ich als Nutzer nicht nachvollziehen konnte warum die INDIREKT() Formel "links oben" nicht berechnet wird, aber die =Coil!Z61 "ganz rechts unten" zuerst fertig ist, wo da doch "rein optisch" 1.2mio andere Formel zuerst dran sein wollen. :-)
Gruß,
Rainer
Anzeige
Ups ...
09.01.2017 13:03:35
lupo1
... habe das NICHT verpasst, da Schleifen in Excel-Formeln nicht so üblich sind (aber mit ZEILE() und SPALTE() möglich). Daher dachte ich spontan: Du möchtest die Formeln mit netten Schleifchen in nette Zellen packen ;)
Mein Fehler!
Gut, dass Du die Formeln plattmachst!
AW: Ups ...
10.01.2017 02:57:14
Rainer
Du hast das NICHT nicht verpasst, ich hatte das NICHT nicht geschrieben, da waren die Finger beim tippen schneller als die Textausgabe des Rechenzentrums.
:-D
Anzeige
AW: In welcher Reihenfolge berechnet Excel Formeln?
07.01.2017 11:42:59
Daniel
Hi
INDIREKT ist in komplexen Tabellen möglichst zu vermeiden, da es die unangenehme Eigenschaft hat voaltil zu sein, was bedeutet dass eine Formel mit Indirekt bei jeder Änderung in Excel neu berechnet wird und somit auch alle Formeln, die von dieser Formel abhängen.
(nicht volatile Formeln werden nur dann neu berechnet, wenn sich in dem von der Formel referenzierten Zellbereich eine Änderung ergeben hat).
in deinem Fall könntest du das Indirekt mit dem nichtvolatilen Index ersetzen:
ersetzte: =INDIREKT("coil!"&$B5&C$4)
durch: =INDEX(coil!$1:$1048576;$C$4;$B$5)
du müsstest aber dann in B5 nicht den Spaltenbuchstaben, sondern die Spaltennummer angeben (oder den Buchstaben in die Nummer umrechnen)
INDIREKT ist eigentlich nur dann erforderlich, wenn der Tabellenblattname berechnet wird oder wenn auf Namen referenziert werden soll.
Sobald dur Zeilen oder Spalten berechnet werden, ist INDEX die bessere Methode.
Gruß Daniel
Anzeige
AW: In welcher Reihenfolge berechnet Excel Formeln?
09.01.2017 07:20:42
Rainer
Hallo Daniel,
das "volatile Indirekt()" ist doch aber nicht volatil wenn das Arbeitsblatt auf

Worksheets("matrix").EnableCalculation = False
gesetzt ist?
Es steht dort, damit auch einfache Nutzer den Verweis kontrollieren können, wenn im ersten Blatt wieder mal jemand der Meinung war alles neu anordnen zu müssen. Da ist es dann auch erforderlich, den Spaltenbuchstaben direkt zu sehen ohne erst aufwändig "nachdenken" zu müssen. Aber genug gelästert...
Aber trotzdem habe ich es probiert und kann nun berichten, dass Excel zumindest INDEX() schneller ausführt als INDIREKT().
Um die Eingabefelder nicht ändern zu müssen habe ich es so geschrieben:
=INDEX(coil!$1:$1048576;C$4;CODE($B5)-64)
Gruß,
Rainer
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

In welcher Reihenfolge berechnet Excel Formeln?


Schritt-für-Schritt-Anleitung

  1. Verständnis der Berechnungsmethoden
    Excel berechnet Formeln in der Regel von oben nach unten und von links nach rechts. Bei komplexen Formeln, die sich auf andere Zellen beziehen, erfolgt eine Rückwärtsberechnung, wenn eine Eingabezelle verändert wird.

  2. Überprüfung der Berechnungseinstellungen
    Stelle sicher, dass die Berechnungseinstellungen auf „Automatisch“ gesetzt sind. Gehe dazu zu FormelnBerechnungsoptionen und wähle „Automatisch“.

  3. Iterative Berechnung aktivieren
    Wenn du iterative Berechnungen benötigst (z. B. bei komplexen Zellverknüpfungen), aktiviere diese in den Excel-Optionen unter FormelnAktivieren von iterativen Berechnungen.

  4. Formeln optimieren
    Um die Rechenzeit zu reduzieren, verwende nicht volatile Funktionen wie INDEX() anstelle von INDIREKT(), da erstere die Berechnung nur bei Änderungen der referenzierten Zellen ausführt.

  5. Berechnungen manuell steuern
    Bei großen Datenmengen kann es hilfreich sein, den Berechnungsmodus auf „Manuell“ zu setzen und die Neuberechnung gezielt mit Application.Calculate auszulösen.


Häufige Fehler und Lösungen

  • Excel aktualisiert Formeln nicht
    Überprüfe die Berechnungseinstellungen. Manchmal kann es helfen, den Berechnungsmodus auf manuell und dann wieder auf automatisch zu setzen.

  • Excel berechnet Formel nicht
    Stelle sicher, dass die Zellen korrekt formatiert sind und keine zirkulären Verweise existieren, die die Berechnung verhindern könnten.

  • Excel Zelle rechnet nicht
    Überprüfe die Zellverknüpfungen und stelle sicher, dass die Zellen, auf die verwiesen wird, gültig sind.


Alternative Methoden

  1. VBA zur Berechnung verwenden
    Du kannst VBA nutzen, um die Reihenfolge der Berechnungen zu steuern. Mit dem Befehl:

    Application.Calculation = xlCalculationManual

    kannst du die Berechnung manuell steuern.

  2. Daten in Arrays verarbeiten
    Anstatt jede Zelle einzeln zu berechnen, kannst du Daten in einem Array verarbeiten, was die Geschwindigkeit erheblich steigern kann.


Praktische Beispiele

  • Einfaches Beispiel für die Verwendung von INDEX
    Ersetze die Formel:

    =INDIREKT("coil!"&$B5&C$4)

    durch:

    =INDEX(coil!$1:$1048576;C$4;CODE($B5)-64)
  • Mehrere Berechnungen in einem Makro
    Wenn du viele Berechnungen durchführen möchtest, kannst du sie in einem Makro zusammenfassen:

    Sub BerechnungenDurchführen()
      Worksheets("Matrix").Calculate
      Worksheets("Coil").Range("Z61").Value = Int((999 * Rnd) + 1)
      Application.Calculate
    End Sub

Tipps für Profis

  • Verwendung von Formeln mit $ für absolute Verweise
    Nutze $ in deinen Formeln, um absolute Zellverweise zu erstellen, die bei Kopieren der Formel nicht verändert werden.

  • Optimierung der Datenstruktur
    Halte die Datenstruktur so einfach wie möglich, um die Berechnungseffizienz zu erhöhen. Vermeide unnötige komplexe Verknüpfungen.

  • Druckreihenfolge anpassen
    Wenn du die Druckreihenfolge in Excel ändern möchtest, gehe zu DateiDrucken und passe die Seitenreihenfolge nach Bedarf an.


FAQ: Häufige Fragen

1. In welcher Reihenfolge berechnet Excel Formeln?
Excel arbeitet in der Regel von oben nach unten und von links nach rechts. Bei Änderungen in einer Zelle wird jedoch rückwärts durch alle abhängigen Formeln gerechnet.

2. Was sind volatile und nicht volatile Formeln?
Volatile Formeln (wie INDIREKT()) werden bei jeder Änderung in Excel neu berechnet, während nicht volatile Formeln nur dann neu berechnet werden, wenn sich die Daten in den referenzierten Zellen ändern.

3. Wie kann ich die Berechnungsgeschwindigkeit in Excel erhöhen?
Vermeide die Verwendung von INDIREKT() und nutze stattdessen INDEX(), um die Berechnungen zu optimieren. Halte die Anzahl der verknüpften Zellen so gering wie möglich.

4. Was tun, wenn Excel einige Formeln nicht berechnet?
Prüfe die Zellformatierung, die Berechnungseinstellungen und stelle sicher, dass keine zirkulären Verweise vorhanden sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige