Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
792to796
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
792to796
792to796
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Berechnung nach Uhrzeit

Berechnung nach Uhrzeit
18.08.2006 11:24:52
kalldy
Hallo,
ich habe ein Problem und konnte auch noch nichts Richtiges finden.
Vielleicht kann mir jemand weiterhelfen!!
Ich suche eine Lösung für folgendes Problem: Normalerweise führt man tagesaktuelle Berechnungen von 00:00 bis 00:00 (nach 24 Stunden) durch. Ich suche aber eine Möglichkeit, die Berechnung von einer beliebigen Zeit aus zu starten und dann für 24 Stunden laufen zu lassen oder auch zu einem anderen Zeitpunkt zu beenden.
Ein Beispiel wäre eine Temperatur Analyse. Also der Temperaturanstieg von 08:00 bis 14:00.
Bsp. der Datei: In A3 steht die heutige Tagestemperatur, die bei jeder Veränderung aktualisiert wird. Ich will jetzt analysieren, um wieviel die Temperatur von 10:00 bis 14:00 steigt. Das Ergebnis wird dann in A4 ausgegeben. Die Uhrzeit könnte in A5 stehen und sollte auch variiert werden können. Wo man das Datum festlegt weiß ich nicht, da die Berechnung fortlaufen soll, d.h. über eine Woche oder noch länger. Es würde aber das Tagesaktuelle erst einmal reichen.
Der Knackpunkt ist wahrscheinlich dieser, das die Temperatur gegen 10:00 die Basis der Berechnung wird.
Das Ergebnis sollte dann die Veränderung in absoluter oder in prozentualer Zahl darstellen.
Ich weiß auch nicht, ob das mit Formeln zu bearbeiten geht oder ob man VBA oder andere Kniffe verwenden muss.
Vielen Dank im Voraus für Lösungsvorschläge und Tipps!
kalldy

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Berechnung nach Uhrzeit
19.08.2006 01:11:51
Holger
Hi,
bitte in diesem Forum keine Nicks verwenden, also wenn du z.B.
Karl- Heinz heißt, Karl- Heinz verwenden und nicht kalldy.
Wenn du nicht Karl-Heinz heißt, dann deinen Namen verwenden.
Grüße Holger
AW: Berechnung nach Uhrzeit
22.08.2006 13:06:41
kalldy
Hallo Holger,
ich werde den Nick rausnehmen.
Danke für den Hinweis.
Cu
AW: Berechnung nach Uhrzeit
22.08.2006 13:15:33
kalldy
Hallo Manfred,
vielen Dank für die Information und den Link.
Ich schaue mir die Sachen in den folgenden Tage an, da ich etwas Ruhe habe.
Wenn noch Fragen bestehen, melde ich mich natürlich wieder.
Viele Grüße
kalldy(Martin)
Anzeige
AW: Berechnung nach Uhrzeit
19.08.2006 22:34:33
ingUR
Hallo, @kalldy,
dass es da eine fertige Vorlagelösung für dieses Problem gibt, das kann ich mir gut vorstellen.
Allerdings wird diese Lösung wohl nur mit VBA-Kenntnis zu erarbeiten sein, wobei das vermeintliche Referenzwertproblem zu lösen, die einfachste Aufgabe ist, da wird einfach die erste festgestellte Quote der Meßreihe nach der Startzeit in eine Variable gesichert.
Eine Arbeitsmappe enthält zwei Schaltflächen vom Typ ComboButton, je einen zum Starten und zum Abbrechen, sowie in den Zellen C2 und D2 die Anfangs- und Enddatumsangaben incl. Uhrzeit (Format: dd.mm.yyyy hh:mm:ss, was intern als Doubletyp, also als Gleitpunktzahl mit doppelter Genauigkeit, bearbeitet wird und wo die Uhrzeit durch die Nachkommerstellen dargestellt wird).
Soblad die Einträge vorgenommen sind kann zu einem beliebigen Zeitpunkt der Start erfolgen. Hier wird dann eine Zeitbeobachtungsfunktion aufgerufen, die sich in vorgegebenem Intevall erneut aufruft (rekrusiver Aufruf).
Die Worksheet-Prozedur als Ereignisprozedur auf des Signal der Start- und Endchaltflächen, cbStart und cbEnde (könnten als Wechselschalter aufgebaut werden):

Private Sub cbStart_Click()
StartDatum=Range("C2")
EndeDatum=Range("D2")
StartValue=Range("A3") ''nur bei selbstgenerierter Testreihe
InitTimeWatch
end sub
Private Sub cbEnde_Click()
FineTimeWatch
end sub
Private Sub Worksheet_Change(ByVal Target As Range)
static RefQ as double, IsRefQ as boolean
If Not IsTestOn Then Exit Sub
If Not Target.Address = Range("A3").Address Then Exit Sub
'... Aufgaben, die nach dem eintreffen eines Meßwertes auszufühtren sind
If not IsRefQ then
RefQ=Range("A3").Value
IsRefQ=True
end If
Range("A4")=Range("A3")/RefQ
end sub

Eine Abbruchprozedur einer eventulle geöffenten Beobachtungsvorgabe sollte vor schließen der Mappe automatisch gelöscht werden. Für das Objekt "Diese Arbeitsmappe" ist das Ereignis "Before_Close" daher mit folgenden Aufruf zu belegen:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error resum Nest
Application.OnTime NextExecTime, "WatchTime", Schedule:=False
End Sub

Die Modulprozeduren InitTimeWatch, TimeWatch und FineTimeWatch enthalten die eigentlichen Aufgaben, die während der Testzeit zu Zeitüberwachung zu erledigen sind:

Public IsTestON as boolean
Public StartDatum as date, EndeDatum as Date
Dim NextExecTime as long
const TIntervall = "00:00:01"
'nur bei selbstgenerierter Testreihe
Public StartValue as double
const ChgP = 5
Public sub InitTimeWatch()
dim cNow as long
' andere Aufgaben vor dem tatsächlichen Start der Testreihe
cNow=Now
if cNow <= EndeDatum then
NextExecTime = iif(cNnow<StartDatum, StartDatum-int(StartDatum), cNow-int(cNow))
IsTestON = true
Application.OnTime NextExecTime, "TimeWatch"
end if
end sub
Public sub WatchTime()
if Now <= EndDatum and IsTestON then
'......... z.B Datengenerierung:
randomize
'nicht jeder Intervall-TimerAufruf führt zu einem neuen Wert
'hier sind es annähernd nur 2 pro 10sec.
if rnd()>0.8 then1
Range("A3")=Range("A3")*(1+sgn(0.5-rnd()*(ChgP*rnd()/100))
end if
NextExecTime=Now+TimeValue(TIntervall)
Application.Ontime NextExecTime, WatchTime
else
FineWatch
exit sub
end if
end sub
Public sub FineWatch
Application.Ontime NextExecTime, WatchTime, Schedule:=False
IsTestON=False
end if

Soweit die nicht getestete Grundidee zur Lösung Deiner Aufgabe. Mit der Konstantenanweisung const TIntervall = "00:00:01" wird während der Testzeit ein Intervall von einer Sekunde angegeben.
Ob dies jedoch für eine längeren Beobachtungszeit ein verwertbare Wert ist, müßten Tests ergeben, ggf. ist er bei längeren Zeiten zu Erhöhen, da der rekrusive Aufruf möglicherweise den Speicher in unzuläßigem Maße füllt.
Baut man in die Formel für die Datengenerierung noch die Berücksichtigung einer gewichteten Zufallsvariablen ein, z.B. (ChgP*F(rnd())/100)), so kann man z.B. Zufallsreihen mit Normalverteilungen simulieren. Wenn ich dazu Gelegenheit habe, dann suche ich die entsprechnde Mappe noch einmal, wo ich dieses für Aktienkursreihen bereits einmal umgesetzt hatte.
Da die gesamten Programmfragmente ohne VBA-Editor geschrieben wurde, kann es auch nicht mehr als eine Konzeptfassung eines Grundgerüstes sein. Ich hoffe dennoch, dass es als Startvorlage die entsprechenden Anregungen zum Finden der richtigen Lösung liefert.
Gruß,
Uwe
Anzeige
AW: Bild (1,2MB/Ladezeit!) des Vorentwurfs
20.08.2006 00:29:36
ingUR
Hallo, @kalldy,
hier nun ein erster Bildeindruck, dass der Tageswechsel problemlos funktioniert.

(Bild 1,2Mb, zum Vergrößern Bildfläche anklicken)
Um jedoch die "Zündung" um einen bzw. um mehr als einen Tag vor dem eigentlichen Testbeginn zu legen, ist eine zusätzliche Vor-TimeOn-Endlosschleife vorzusehen, die ers am Startzeitpunkt abgebrochen wird. Ob das allerdings erforderlich ist, hängt von den vorgesehenen Einsatzbedingungen ab (Wochenenden-Zeitschaltung).
Zudem ist darauf zu achten, dass die referenzierung der Mappen-/Tabellen- und Zellenobjekte sauber programmiert werden, da ansonsten das weitere Arbeiten mit dieser EXCEL-Anwendung nicht möglich ist. Da dieses in der vorliegenden Programmfassung nicht umgesetzt ist, stelle ich die Vorstellung des Programmcodes zurück. Das Bild soll alos nur zeigen, was auch umsetzbar ist.
Gruß,
Uwe
Anzeige
AW: Berechnung nach Uhrzeit
22.08.2006 13:41:15
kalldy
Hallo ingUR,
vielen Dank für die umfangreiche Antwort und den Vorentwurf.
Ich habe in den kommenden Tagen etwas Zeit, um mich mit dem Thema zu beschäftigen.
Bei noch offenen Fragen melde ich mich einfach wieder.
Ihren Vorschlag --siehe unten-- würde ich gerne annehmen, da man mit den beweglichen Kursen besser testen kann und man mehrere Möglichkeiten hat. Bitte noch einmal suchen!!
--Wenn ich dazu Gelegenheit habe, dann suche ich die entsprechnde Mappe noch einmal, wo ich dieses für Aktienkursreihen bereits einmal umgesetzt hatte.--
Viele Grüße
kalldy(Martin)
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige