Supportnet / Forum / Tabellenkalkulation
ich möchte eine WENN-Funktion nur zu einem bestimmten Zeitpunkt ausführen.
Frage
Ich möchte eine WENN-Funktion nur zu einem bestimmten Zeitpunkt ausführen lassen.
Zu allen anderen Zeitpunkten soll das alte Ergebnis beibehalten werden.
Beispiel:
Ich will das jede Stunde ( 0:00 Uhr, 1:00 Uhr, usw.) irgendetwas
berechnet wird (bsp. A1+A2).
Kann mir jemand hierfür eine Lösung nennen?
Antwort 1 von Event
Hallo erstmal...
Das ginge so:
=WENN(UND(SEKUNDE(JETZT())=0;MINUTE(JETZT())=0);A1+A2;"irgendetwas")
Diese Methode hat den entscheidenen Nachteil, das Excel nicht ständig Werte neuberechnet, und funktioniert deshalb nur dann, wenn in dieser 0-Minute eine Änderung im Tabellenblatt vorgenommen wird.
Nachfolgener Code, in ein Standardmodul kopiert, und über ALT+F8 ausführen gestartet, bewirkt das in Zelle A1 jede Sekunde die Uhrzeit eingetragen wird.
Dabei wird dann auch die oben zitierte Formel neu berechnet.
Gruß
Das ginge so:
=WENN(UND(SEKUNDE(JETZT())=0;MINUTE(JETZT())=0);A1+A2;"irgendetwas")
Diese Methode hat den entscheidenen Nachteil, das Excel nicht ständig Werte neuberechnet, und funktioniert deshalb nur dann, wenn in dieser 0-Minute eine Änderung im Tabellenblatt vorgenommen wird.
Nachfolgener Code, in ein Standardmodul kopiert, und über ALT+F8 ausführen gestartet, bewirkt das in Zelle A1 jede Sekunde die Uhrzeit eingetragen wird.
Option Explicit
Sub timer()
Range("A1").Value = Format(Now(), "hh:mm:ss")
Application.OnTime Earliesttime:=Now + TimeSerial(0, 0, 1), procedure:="timer"
End Sub
Dabei wird dann auch die oben zitierte Formel neu berechnet.
Gruß
Antwort 2 von WENN
Sorry aber die erste Antwort funktioniert nicht !
In der ersten Antwort wird das Ergebnis ständig überschrieben (durch Argument "irgendetwas").
Ich will aber das die Berechnung nur einmal je Stunde
(Argument A1+A2) gemacht wird.Danach darf das Ergebnis nicht mehr durch das Argument "irgendetwas" überschrieben werden.
Bsp.:
Um 12:00 Uhr soll A1+ A2 berechnet werden.
Wenn sich A1 um 12:01 Uhr verändert, darf keine Berechnung erneut gemacht werden. Es soll weiterhin das Ergebnis angezeigt werden wie es noch um 12:00 Uhr war. Erst um 13:00 Uhr soll wieder gerechnet werden und der neue Wert angezeigt werden.
In der ersten Antwort wird das Ergebnis ständig überschrieben (durch Argument "irgendetwas").
Ich will aber das die Berechnung nur einmal je Stunde
(Argument A1+A2) gemacht wird.Danach darf das Ergebnis nicht mehr durch das Argument "irgendetwas" überschrieben werden.
Bsp.:
Um 12:00 Uhr soll A1+ A2 berechnet werden.
Wenn sich A1 um 12:01 Uhr verändert, darf keine Berechnung erneut gemacht werden. Es soll weiterhin das Ergebnis angezeigt werden wie es noch um 12:00 Uhr war. Erst um 13:00 Uhr soll wieder gerechnet werden und der neue Wert angezeigt werden.
Antwort 3 von Event
Hallo
Dann mach´s halt so:
Gruß
Dann mach´s halt so:
Option Explicit
Sub timer()
Dim Gong As String
Range("C1").Value = Format(Now(), "hh:mm:ss")
Gong = CStr(Hour(Now()) + 1)
If Val(Gong) = 24 Then Gong = "00"
Debug.Print Gong
Application.OnTime TimeValue(Gong & ":00:00"), procedure:="timer"
Rem Deine Berechnung hier vornehmen
Range("C2").Value = Range("A1").Value + Range("A2").Value
End Sub
Gruß
Antwort 4 von WENN
Super es klappt, vielen Dank für die Lösung.
Eine weitere Frage hätte ich aber noch.
Wie müsste es denn aussehen wenn die Berechnung
jede Minute gemacht werden soll ?
Gruß
Eine weitere Frage hätte ich aber noch.
Wie müsste es denn aussehen wenn die Berechnung
jede Minute gemacht werden soll ?
Gruß

