Discussion:
Berechnetes Feld in Abfrage: Gleitender Mittelwert
(zu alt für eine Antwort)
Michael
2010-01-31 06:21:01 UTC
Permalink
Hallo

in Excel habe ich eine Formel zur Bestimmung eines gleitenden Mittelwertes.
Ich müsste analog eine Feldfunktion für den Wert "30 Tage V MW" in ACC07
haben. Es geht dabei um die Bestimmung einer gleitenden
Durchschnittsgeschwindigkeit.
Die Formel in Excel lautet:

=SUMMEWENN($A$2:INDIREKT("$a"&ZEILE());">="&A2-29;$AC$2:INDIREKT("$aC"&ZEILE()))/(ZÄHLENWENN($A$2:INDIREKT("$a"&ZEILE());">="&A2-29))

der Wert "30 Tage V MW"gibt den Mittelwert aller Einträge des Felds "V MW"
innerhalb der letzten 29 Tage vor dem letzten Eintrag zurück. Kann so etwas
überhaupt in Access umgesetzt werden? Und wenn ja, wie?

Datum V MW 30 Tage VMW
26.10.2001 24,97 24,97
27.10.2001 22,92 23,94
28.10.2001 19,83 22,57
01.11.2001 24,68 23,10
03.11.2001 25,80 23,64
19.01.2002 25,07 25,07
20.01.2002 24,17 24,62
25.01.2002 25,87 25,04
27.01.2002 21,90 24,25



Grüße
und Danke
Thomas Möller
2010-01-31 09:28:35 UTC
Permalink
Hallo Michael,
Post by Michael
in Excel habe ich eine Formel zur Bestimmung eines gleitenden Mittelwertes.
Ich müsste analog eine Feldfunktion für den Wert "30 Tage V MW" in ACC07
haben. Es geht dabei um die Bestimmung einer gleitenden
Durchschnittsgeschwindigkeit.
=SUMMEWENN($A$2:INDIREKT("$a"&ZEILE());">="&A2-29;$AC$2:INDIREKT("$aC"&ZEILE()))/(ZÄHLENWENN($A$2:INDIREKT("$a"&ZEILE());">="&A2-29))
der Wert "30 Tage V MW"gibt den Mittelwert aller Einträge des Felds "V MW"
innerhalb der letzten 29 Tage vor dem letzten Eintrag zurück. Kann so etwas
überhaupt in Access umgesetzt werden? Und wenn ja, wie?
Datum V MW 30 Tage VMW
26.10.2001 24,97 24,97
27.10.2001 22,92 23,94
28.10.2001 19,83 22,57
01.11.2001 24,68 23,10
03.11.2001 25,80 23,64
19.01.2002 25,07 25,07
20.01.2002 24,17 24,62
25.01.2002 25,87 25,04
27.01.2002 21,90 24,25
probier mal diesen SQL-String:

SELECT tbl_Werte.Dat,
tbl_Werte.Wert,
DAvg("Wert","tbl_Werte","[Dat] Between #" &
Format(DateAdd("d",-30,[Dat]),"mm\/dd\/yyyy") & "# AND #" &
Format([Dat],"mm\/dd\/yyyy") & "#") AS 30TageDurch
FROM tbl_Werte;

Im Beispiel habe ich folgende Namen verwendet:
Die Tabelle heißt "tbl_Wert".
Das Feld mit dem Datum heißt bei mir "Dat".
Und das Feld mit dem Wert, dessen gleitender Durchschnitt ermittelt
werden sollt, trägt den namen "Wert".


HTH
--
Thomas

Homepage: www.Team-Moeller.de
Michael
2010-01-31 13:23:01 UTC
Permalink
Post by Thomas Möller
Hallo Michael,
Post by Michael
in Excel habe ich eine Formel zur Bestimmung eines gleitenden Mittelwertes.
Ich müsste analog eine Feldfunktion für den Wert "30 Tage V MW" in ACC07
haben. Es geht dabei um die Bestimmung einer gleitenden
Durchschnittsgeschwindigkeit.
=SUMMEWENN($A$2:INDIREKT("$a"&ZEILE());">="&A2-29;$AC$2:INDIREKT("$aC"&ZEILE()))/(ZÄHLENWENN($A$2:INDIREKT("$a"&ZEILE());">="&A2-29))
der Wert "30 Tage V MW"gibt den Mittelwert aller Einträge des Felds "V MW"
innerhalb der letzten 29 Tage vor dem letzten Eintrag zurück. Kann so etwas
überhaupt in Access umgesetzt werden? Und wenn ja, wie?
Datum V MW 30 Tage VMW
26.10.2001 24,97 24,97
27.10.2001 22,92 23,94
28.10.2001 19,83 22,57
01.11.2001 24,68 23,10
03.11.2001 25,80 23,64
19.01.2002 25,07 25,07
20.01.2002 24,17 24,62
25.01.2002 25,87 25,04
27.01.2002 21,90 24,25
SELECT tbl_Werte.Dat,
tbl_Werte.Wert,
DAvg("Wert","tbl_Werte","[Dat] Between #" &
Format(DateAdd("d",-30,[Dat]),"mm\/dd\/yyyy") & "# AND #" &
Format([Dat],"mm\/dd\/yyyy") & "#") AS 30TageDurch
FROM tbl_Werte;
Die Tabelle heißt "tbl_Wert".
Das Feld mit dem Datum heißt bei mir "Dat".
Und das Feld mit dem Wert, dessen gleitender Durchschnitt ermittelt
werden sollt, trägt den namen "Wert".
HTH
--
Thomas
Homepage: www.Team-Moeller.de
Vielen Dank Thomas.

Klappt klasse. für mich wird sql wohl noch lange ein Buch mit sieben Siegeln
bleiben.

Apropos: was bedeutet eigentlich "\/"

Grüße
Michael
Post by Thomas Möller
.
Thomas Möller
2010-01-31 13:50:54 UTC
Permalink
Hallo Michael,
Post by Michael
Post by Thomas Möller
SELECT tbl_Werte.Dat,
tbl_Werte.Wert,
DAvg("Wert","tbl_Werte","[Dat] Between #"&
Format(DateAdd("d",-30,[Dat]),"mm\/dd\/yyyy")& "# AND #"&
Format([Dat],"mm\/dd\/yyyy")& "#") AS 30TageDurch
FROM tbl_Werte;
Apropos: was bedeutet eigentlich "\/"
für den Ausdruck in der Formatfunktion braucht es den Slash("/"). Der
Backslash("\") davor sorgt dafür, dass das nachfolgende Zeichen als
Literal behandelt wird, also so wie es dasteht.

CU
--
Thomas

Homepage: www.Team-Moeller.de
Peter Doering
2010-01-31 16:23:53 UTC
Permalink
Hallo,
Post by Michael
Apropos: was bedeutet eigentlich "\/"
Als Ergaenzung zu Thomas' Antwort:

Der "/" wuerde zu ".", "-" oder was auch immer konvertiert, je nachdem, was
in den Regionaleinstellungen als Datumstrennzeichen festgelegt ist. Der
Backslash verhindert diese Konvertierung. Siehe auch

www.donkarl.com?FAQ6.8

Gruss - Peter
--
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com
Loading...