Mittelwert in Abfrage

Hallo zusammen,

ich hatte vor ei paar Tagen schon mal das Problem, einen durchschnitt in einer abfrage zu bilden. dank eurer Hilfe ist mir das geglückt.
Jetzt hab ich nur noch ein Problem:
In der abfrage habe ich insgesamt 10 Spalten, aus denen der Durchschnitt gebildet werden soll. Es kommt jedoch auch vor, dass einige Felder Null sind. Dann kann ich die nicht mit in den Durchschnitt einrechnen. Wie bekomme ich das hin, dass die Abfrage die Null- Felder nicht mit dividiert?

Vielen Dank für eure Hilfe im Voraus und viele Grüße aus der verschneiten Oberlausitz sendet Beate

Hallo,

am Besten erstellst Du eine Public-Funktion, die die Felder entspr. behandelt/bestimmt und den Durchschnitt als Wert zurückliefert.

Diese Funktion setzt Du in der Abfrage anstelle der vorgeschlagenen Berechnungen ein.

Mein „AusnahmeFall #2“ dürfte hier wohl greifen:

falls
– die Runden-Funktionaltität der Format-Funktion Dir mathematisch genügt (und hier auf eine Nachkommastelle eingestellt ist)
– der Divisor immer die Anzahl der benutzten Felder, auch wenn sie leer sind, sein darf/muß,
– bei zusätzlichen Feldern diese syntaktisch richtig und mit angepaßter Divisorzahl (–> Anzahl der Felder) eingebaut werden.

Wenn Du noch die Namen aller betroffenen Felder posten würdest, könnte ich vielleicht auch mit einem Code für die Funktion dienen…

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Hallo Beate,

da musst du dir eine Funktion schreiben, die das berechnet:

Public Function Zähl_Spalten()
Zähl_Spalten = 0

if not isnull([mathematik]) then Zähl_Spalten = Zähl_Spalten +1
if not isnull([deutsch]) then Zähl_Spalten = Zähl_Spalten +1
if not isnull([englisch]) then Zähl_Spalten = Zähl_Spalten +1
usw.

End Function

Diese Function nutzt du dann als Divisor. Siehe Beispiel:

Durchschnitt: (NZ([Deutsch],0)+NZ([Bio],0)+NZ([Chemie],0)+NZ([Mathe],0))/Zähl_Spalten

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Hallo

vielen Dank für die antworten.
Meine Feldnamen sind ewig lang. Nimm einfach die normalen Schulfächer als Feldnamen an.

Hier meine berechnung in der Abfrage:

Durchschnitt: (Nz([Mathe];0)+Nz([Deutsch];0)+Nz([Englisch];0)+Nz([Geschichte];0)+Nz([Informatik];0)+Nz([Geografie];0))/6

Ich tu mich gerade noch schwer, wo ich die Funktion eingebe. Wäre super, wenn ihr mir da auch noch helfen könnt.

Viele Grüße von Beate

Hallo Beate,

du hast meine Antwort gelesen?

Diese Funktion nutzt du dann als Divisor. Siehe Beispiel:
Durchschnitt: (NZ([Deutsch],0)+NZ([Bio],0)+NZ([Chemie],0)+NZ([Mathe],0))/Zähl_Spalten()

aber wenn du sowieso eine Funktion schreibst, kannst du eigentlich auch alles in diese reinpacken.

Public Function Durchschnitt_Noten()
Dim Zähl_Spalten
Zähl_Spalten = 0

if not isnull([mathematik]) then Zähl_Spalten = Zähl_Spalten +1
if not isnull([deutsch]) then Zähl_Spalten = Zähl_Spalten +1
if not isnull([englisch]) then Zähl_Spalten = Zähl_Spalten +1
usw.

Durchschnitt_Noten = (Nz([Mathe],0)+Nz([Deutsch],0)+Nz([Englisch],0)+Nz([Geschichte],0)+Nz([Informatik],0)+Nz([Geografie],0))/Zähl_Spalten()

End Function

Diese Function nutzt du dann an Stelle der bisherigen Berechnung:

Beispiel bisher:

Durchschnitt: (NZ([Deutsch],0)+NZ([Bio],0)+NZ([Chemie],0)+NZ([Mathe],0))/Zähl_Spalten

Beispiel neu:

Durchschnitt: Durchschnitt_Noten()

hth

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Hallo Wolfgang,

vielen Dank für deine schnelle Antwort.
Ich glaube ich bin kurz vor der Lösung. Beim Anzeigen der Abfrage kommt ein fehler in der Function: „Fehler beim Kompilieren: externer name nicht definiert“ In der Function springt der Cursor dann auf das erste Fach, im beispiel „deutsch“

Woran kann das liegen und wie kann ich das beheben?

Viele grüße von Beate

Hallo,

mein Vorschlag:

In ein Standardmodul (Datenbankfenster/Module) die folgende Funktion kopieren:

Public Function fktCalCAvg(ParamArray w()) As Double
Dim i As Long, i1 As Long, Res As Double
If UBound(w) 


und z. B.: in der Abfrage in einer berechneten Spalte:


Feld: Notendurchschnitt: fktCalCAvg([Deutsch],[Englisch],[Geschichte],[Informatik],[Geografie]) 




Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Hallo Franz,

super, wieder was dazu gelernt.
Das Modul funktioniert einwandfrei.

Danke :smile:

Viele Grüße von Beate