Bei Verwendung der IF-Funktion möchte Vineet den alten Wert in der Zelle beibehalten, wenn die Bedingung falsch ist. Mit anderen Worten, der Wert in einer Zelle, in der die IF-Funktion verwendet wird, sollte sich nur ändern, wenn die von der IF-Funktion getestete Bedingung erfüllt ist. Standardmäßig setzt die IF-Funktion jedoch den Wert 0, wenn die Bedingung False ist.

Die IF-Funktion kann bis zu drei Parameter annehmen. Der erste Parameter ist der Vergleich, der durchgeführt werden soll, der zweite Parameter ist das, was zurückgegeben werden soll, wenn der Vergleich wahr ist, und der dritte Parameter ist das, was zurückgegeben werden soll, wenn der Vergleich falsch ist. Es ist möglich, den letzten Parameter wegzulassen, aber wenn Sie dies tun, gibt Excel den Wert 0 zurück, wenn der Vergleich falsch ist. (Dies ist, was Vineet durch seine Verwendung der IF-Funktion zurückgibt.)

Die naheliegende Lösung besteht also darin, sicherzustellen, dass Sie der IF-Funktion etwas zur Verfügung stellen, das zurückgegeben werden sollte, wenn der Vergleich falsch ist. Nehmen wir zum Beispiel an, Ihre Formel befindet sich in Zelle B1 und Sie vergleichen etwas in Zelle A1. Die von Ihnen verwendete Formel könnte folgendermaßen aussehen:

=IF(A1<10,"under ten",B1)

Beachten Sie, dass die Wörter „unter zehn“ zurückgegeben werden, wenn der Wert in A1 kleiner als 10 ist. Wenn diese Bedingung nicht erfüllt ist, wird der Wert in B1 zurückgegeben.

Da sich diese Formel in Zelle B1 befindet, bedeutet dies, dass der vorherige Wert in der Zelle zurückgegeben wird, wenn die Bedingung falsch ist.

Dies bedeutet auch, dass die Formel einen Zirkelverweis enthält. Damit Zirkelverweise in Ordnung sind, müssen Sie Excel mitteilen, dass sie in Ihrem Arbeitsblatt in Ordnung sind. Wählen Sie Extras | Optionen | Registerkarte Berechnung und stellen Sie sicher, dass das Kontrollkästchen Iteration aktiviert ist. Excel erlaubt jetzt den Zirkelverweis ohne Beanstandung.

Wenn Sie keinen Zirkelverweis in Ihrem Arbeitsblatt zulassen möchten, müssen Sie nur ein Makro erstellen, das den Wert in Zelle B1 basierend auf Änderungen an Zelle A1 aktualisiert:

Private Sub Workbook_SheetChange(ByVal Sh As Object, _   ByVal Target As Range)



' See if the change is related to our cell     If Not (Application.Intersect(Target, Range("A1")) _       Is Nothing) Then         If Range("A1") < 10 Then             Range("B1") = "under ten"

End If     End If End Sub

Dieses einfache Makro wird beim Hinzufügen zum ThisWorkbook-Modul jedes Mal ausgeführt, wenn sich die Arbeitsmappe ändert. Wenn der Wert Zelle A1 geändert wird (und nur diese Zelle), wird der Wert überprüft, um festzustellen, ob er kleiner als 10 ist. Wenn dies der Fall ist, wird der Wert in Zelle B1 geändert. Ist dies nicht der Fall, wird der Wert in Zelle B1 in Ruhe gelassen.

Es gibt ein „Gottcha“, das Sie bei jedem der bisher diskutierten Ansätze berücksichtigen müssen: Formel oder Makro. Wenn der Wert in Zelle A1 (sagen wir) 15 ist, dann enthält Zelle B1, was vorher da war, was auch immer es war. Wenn Sie den Wert in Zelle A1 auf (sagen wir) 7 ändern, ändert sich B1 auf „unter zehn“. Das ist in Ordnung, aber ab diesem Zeitpunkt scheint sich Zelle B1 nie mehr zu ändern. Warum? Wenn Sie dann Zelle A1 auf einen Wert größer als 10 ändern, enthält Zelle B1 (wie gerade erläutert) das, was zuvor vorhanden war. Und wie Sie jetzt verstehen, ist der Wert, der vorher da war, das Ergebnis des vorherigen wahren Ergebnisses, das „unter zehn“ war. Ob wahr oder falsch, die Formel oder das Makro zeigt ab diesem Zeitpunkt den Text „unter zehn“ an.

_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 (8260) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: