Um ein einmal mit der HEUTE()-Funktion generiertes Datum in einer Zelle so zu fixieren, dass es weder durch manuelles Auslösen der Neu Berechnen-Funktion mit [F9], noch bei erneutem Öffnen der Datei aktualisiert wird, muss man die HEUTE()-Funktion so aufrufen, dass sie nur in bestimmten Daten-Konstellationen ausgeführt wird. Dazu wird eine »Hilfszelle« benötigt, mit deren Wert die Datums-Zelle gleichsam ein- und ausgeschaltet werden kann.
- A2 → »Hilfszelle«
Je nach Zustand dieser Zelle soll B2 leer sein oder ein Datum enthalten:
A2 ist leer → B2 ist leer
A2 nicht leer → B2 enthält ein Datum - B2 → Datums-Zelle
Die Datums-Zelle enthält die Formel
Code: Alles auswählen
=WENN(A2="";"";WENN(ZELLE("TYPE";B2)="v";B2;HEUTE()))
- Zustand: A2=""
die äußere WENN-Bedingung [ WENN(A2="";… ] in B2 ist WAHR, daher
Zuweisung: B2=""
Zustand: B2=""
Dies ist der erste stabile Zustand, denn dieser Ablauf wird bei jeder Neuberechnung ausgeführt. - Zuweisung: A2="x"
Zustand: A2="x"
die äußere WENN-Bedingung [ WENN(A2="";… ] in B2 ist FALSCH, daher
Auswertung der inneren WENN-Bedingung [ …;WENN(ZELLE("TYPE";B2)="v";… ]
B2 ist immer noch leer (!), daher
die innere WENN-Bedingung in B2 ist FALSCH, daher
Zuweisung: B2=HEUTE()
Zustand: B2=aktuelles Datum
In diesem Zustand ist das Datum in B2 fixiert, denn beim erneuten Öffnen der Datei verhält sich das Zell-Tandem so: - Zustand: A2="x"
die äußere WENN-Bedingung in B2 ist FALSCH, daher
Auswertung der inneren WENN-Bedingung
B2 ist jetzt nicht mehr leer (!), daher
die innere WENN-Bedingung in B2 ist WAHR, daher
Zuweisung: B2=B2
Zustand: B2=altes Datum
Um das Datum in B2 zu ändern, muss die Datums-Zelle mit Hilfe der »Hilfszelle« A2 aus- und wieder eingeschaltet werden. Dies sind die beiden folgenden Abläufe: - Zuweisung: A2=""
Zustand: A2=""
wie 1. - Zuweisung A2="x"
Zustand: A2="x"
wie 2.
- Die Lösung erfordern, dass die Option Extras → Optionen → Calc → Berechnen → Iterationen aktiviert ist. Dies spiegelt den oben beschriebenen Programmfluss wieder, in dem ja dieselben Zellen schleifenartig mehrfach ausgewertet werden (können), um den finalen Status zu erreichen.
- Die Ausgangsformel kann man natürlich noch variieren. Um z.B. ein berechnetes Zahlungsziel festzuhalten, wird HEUTE() ersetzt durch "Rechnung ist zahlbar bis " & TEXT(HEUTE()+28;"TT.MM.JJJJ").
Code: Alles auswählen
=WENN(A2="";"";WENN(ZELLE("TYPE";B2)="v";B2;"Rechnung ist zahlbar bis " & TEXT(HEUTE()+28;"TT.MM.JJJJ")))
- Die Lösungen funktionieren auch, wenn statt eines Datums eine Uhrzeit verwendet wird. Dazu ist statt der Funktion =HEUTE() die Funktion =JETZT() zu verwenden, und alle (z.B. mit TT.MM.JJJJ) als Datum formatierte Zellen sind (z.B. mit HH:MM:SS) als Zeit zu formatieren und entsprechend zu behandeln.
Diese „Stellvertreterfunktion“ kann zu Testzwecken genutzt werden, um nachzuweisen, in welchen Konstellationen ein einmal gesetztes Datum (eine einmal gesetzte Zeit) unveränderlich bleibt oder aber gelöscht und neu gesetzt wird, ohne zu diesem Zweck die Systemzeit manuell zu ändern.