Mike hat drei Zellen (A1: A3), die Ergebnisse von Berechnungen anzeigen. Er braucht eine Möglichkeit, den Maximalwert zu bestimmen, der jemals in einer dieser Zellen aufgetreten ist, und diesen Wert in Zelle E5 zu speichern. Er weiß, wie man das Maximum aus den drei herausholt, aber wenn er das Arbeitsblatt neu berechnet, wenn die Werte in A1: A3 kleiner sind als der Maximalwert in E5 (basierend auf früheren Bestimmungen des Maximums in A1: A3), dann E5 sollte sich nicht ändern. Mit anderen Worten, E5 sollte sich nur ändern, wenn das, was in A1: A3 ist, größer ist als das, was in E5 ist. Mike ist sich nicht sicher, wie er eine solche Berechnung durchführen soll.

Es gibt zwei Möglichkeiten, wie Sie dieses Problem lösen können. Die erste besteht darin, eine einfache Formel zu erstellen, die in Zelle E5 platziert wird:

=MAX(A1:A3,E5)

Die MAX-Funktion untersucht die verschiedenen Werte, auf die sie verweist, und gibt dann das Maximum aus ihnen zurück – genau das, was gewünscht wird. Da diese Formel jedoch in Zelle E5 platziert wird und auch auf E5 verweist, wird ein Fehler zurückgegeben. Dies liegt daran, dass die Formel einen Zirkelverweis erstellt. Excel kann damit umgehen, aber Sie müssen eine kleine Konfigurationsänderung vornehmen, um dies zu tun:

  1. Wählen Sie Optionen aus dem Menü Extras. Excel zeigt das Dialogfeld Optionen an.

  2. Zeigen Sie die Registerkarte Berechnung an. (Siehe Abbildung 1.)

  3. Stellen Sie sicher, dass das Kontrollkästchen Iteration aktiviert ist.

  4. OK klicken.

Jetzt verarbeitet Excel Zirkelverweise, wie z. B. die einfache Formel, die Sie in Zelle E5 eingegeben haben.

Der zweite Ansatz besteht darin, ein Makro zu verwenden, um die Berechnung durchzuführen. Dieser Ansatz wird möglicherweise bevorzugt, da Sie (aus irgendeinem Grund) möglicherweise keine Zirkelverweise in Ihrer Arbeitsmappe aktivieren möchten. Das Folgende ist eigentlich ein Ereignishandler, der dem Code für das Arbeitsblatt hinzugefügt wurde. (Einfachste Methode:

Klicken Sie mit der rechten Maustaste auf die Blattregisterkarte, zeigen Sie das Codefenster im daraufhin angezeigten Kontextmenü an und fügen Sie das Makro zu diesem Codefenster hinzu.)

Private Sub Worksheet_Calculate()

Dim dMax As Double     dMax = Application.WorksheetFunction.Max(Range("A1:A3"))

If dMax > Range("E5") Then         Application.EnableEvents = False         Range("E5") = dMax         Application.EnableEvents = True     End If End Sub

Das Makro wird jedes Mal ausgelöst, wenn das Arbeitsblatt neu berechnet wird. Es erfasst das Maximum von A1: A3 und vergleicht es mit dem in E5. Nur wenn es größer ist, wird dieser Wert in E5 gesetzt.

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (10915) gilt für Microsoft Excel 97, 2000, 2002 und 2003.

Eine Version dieses Tippes für die Multifunktionsleistenoberfläche von Excel (Excel 2007 und höher) finden Sie hier: