Excel - Zirkelbezüge vermeiden

Zirkelbezüge vermeiden

Problem: Sie möchten in Excel zum aktuellen Wert in der Zelle A1 kontinuierlich die veränderten Werte einer anderen Zelle addieren. Wenn Sie jedoch in die Zelle A1 die Formel =A1+B1 eingebe, meldet Excel einen Zirkelbezug und bricht ab.

Excel muss an einer Stelle mit seinen Berechnungen anfangen können. In obigem Beispiel benötigt Excel aber bereits zur Berechnung des ersten Wertes für die Zelle A1 auch den aktuellen Wert aus eben dieser Zelle.

Sie sind wahrscheinlich und ganz logisch davon ausgegangen, dass die Formel einen zeitlichen Ablauf hat: Das Ergebnis in A1 soll die Summe zweier Werte darstellen, von denen einer vorher schon in der Zelle A1 gestanden hat. Eine Tabellenkalkulation wie Excel kann jedoch immer nur die Werte aller Zellen zu genau einem Zeitpunkt unterscheiden.

Bei Formeln, die dieser Logik widersprechen, beißen sich die Berechnungen quasi selbst in den Schwanz. Genau dann liegt auch ein Zirkelbezug vor, auf den Excel mit einer entsprechenden Meldung hinweist. Auf Wunsch kann Excel den Bezug sogar grafisch mit Linien und Pfeilen verdeutlichen, was besonders bei großen Arbeitsblättern von Vorteil ist.

Um den Zirkelbezug in Ihrem Fall zu umgehen, benötigen Sie einen Speicher, der den Wert aus A1 oder die Formel für die Zeit der Berechnung zwischenlagert. Dieser Speicher kann beispielsweise eine weitere Zelle sein, die Sie mit einem Makro verwenden. Um ein neues Makro anzulegen, führen Sie den Befehl Extras Makro | Makros aus und geben in das Feld Makroname den gewünschten Namen ein. Anschließend klicken Sie auf die Schaltfläche Erstellen und geben die Zeilen aus diesem Listing ein:

Sub Zirkelbezug()
  ActiveCell.Offset(1,0).Range("A1").Select
  ActiveCell.FormulaR1C1="=SUM(R[-1]C[-1]:R[-1]C)"
  ActiveCell.Select
  Selection.Copy
  ActiveCell.Offset(-1,-1).Range("A1").Select
  Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
  ActiveCell.Offset(1,1).Range("A1").Select
  Application.CutCopyMode = False
  Selection.ClearContents
  ActiveCell.Offset(-1,0).Range("A1").Select
End Sub

Die erste Zeile bewegt die Einfügemarke relativ zur aktuellen Position eine Zelle nach unten (im Beispiel von B1 nach B2) und fügt dort eine Formel zur Addition der Werte aus den Zellen links und direkt darüber ein (im Beispiel =A1+B1). Anschließend kopiert das Makro den Inhalt der aktiven Zelle in die Zwischenablage und wechselt in die Zelle für den Ergebniswert (im Beispiel A1). Dort überschreibt das Makro den Inhalt mit dem Wert der soeben kopierten Summe. Zum Abschluss löscht das Makro noch die zur Berechnung erzeugte Formel, um alles wieder sauber aufzuräumen.

Wenn Sie das Makro mehrfach hintereinander ausführen, erhalten Sie den gewünschten Effekt für das kontinuierliche Aufsummieren des Wertes in A1. Dafür sollten Sie das Makro mit einer Tastenkombination verknüpfen. Klicken Sie dazu im Makro-Dialog erst auf den Makronamen und dann auf die Schaltfläche Optionen.

Die Zelladressen sind im Beispielmakro relativ. Sie können es dadurch an jeder Stelle in einer Excel-Tabelle verwenden, solange das Eingabefeld direkt rechts vom Ergebnisfeld liegt. Falls Ihnen dies nicht zusagt, passen Sie jeweils die Parameter der Methode Range im Makro Ihren Wünschen an. Der erste Parameter bestimmt immer die vertikale und der zweite die horizontale Bewegung.

Mehr Tipps: Excel - Auto-Ausfüllen-Liste anlegen

Sponsoren und Investoren

Sponsoren und Investoren sind jederzeit herzlich willkommen!
Wenn Sie die Information(en) auf dieser Seite interessant fanden, freuen wir uns über eine kleine Spende. Empfehlen Sie uns bitte auch in Ihren Netzwerken (z. B. Twitter, Facebook oder Google+). Herzlichen Dank!

Nach oben Sitemap
Impressum & Kontakt