Seite 1 von 1

Mit der HEUTE()-Funktion in Calc erzeugtes Datum fixieren

Verfasst: Sa, 29.09.2012 19:50
von lorbass
Wie kann ich ein einmal mit der HEUTE()-Funktion erzeugtes Datum so fixieren, das es später nicht automatisch verändert wird?

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()))
Zum Verständnis der Arbeitsweise dieses Zell-Tandems sind nachfolgend deren Verhalten, Zustände und Zustandswechsel schematisch skizziert:
  • 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.
Hinweise
  1. 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.
     
  2. 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")))
  3. 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.

Re: Mit der HEUTE()-Funktion in Calc erzeugtes Datum fixiere

Verfasst: So, 03.03.2013 16:38
von paljass
Eine weitere Möglichkeit, ein Datum zu fixieren

1. Einfügen - Namen
Als Name einen "sprechenden" Namen eingeben (hier: Test_Datum)

2. Zugeordnet zu
Hier wird die Formel TEXT(HEUTE();"TT.MM.JJJJ") eingeben; anschließend Hinzufügen und OK anklicken

3. Zelle(n) auswählen
Nun werden die Zellen ausgewählt, die den Zeitstempel erhalten sollen.

4. Auswahlliste erstellen
Per Daten - Gültigkeit wird über Zulassen - Zellbereich unter Quelle der vergebene Name (hier: Test_Datum) eingegeben

5. Ausgewählte Zellen formatieren
Die Zellen, in denen die Gültigkeit eingefügt worden ist, müssen noch auf das zu verwendende Format eingestellt werden.

Nun hat man in den ausgewählten Zellen eine Gültigkeitsliste mit nur einem Eintrag, nämlich dem Datum, das der Computer am heutigen Tag verwendet.
Wählt man es aus, wird es in die Zelle übernommen und ändert sich beim erneuten Öffnen der Datei nicht automatisch.

Re: Fixiertes Datum in Calc-Zelle einfügen

Verfasst: Di, 01.07.2014 18:50
von Stephan
hier ist eine kleine Extension für OO/LO die das erledigt, Hinweise auch unter:
viewtopic.php?f=2&t=64217&p=246556#p246556