Mittelwert bilden
#1
Hallo,
ich bin neu in diesem Forum und habe eine Frage an die Spezialisten...

Ich versuche in einem Excel Formular einen Mittelwert per Average aus drei Textfeldern zu ermitteln und in einem anderen Textfeld als Ergebnis eintragen,
bevor ich die Daten in die Tabelle übermittle.
Formel über Mittelwert in der Tabelle klappt hervorragend, aber ich kann die Formel leider nicht in der Tabelle belassen, da sonst das dynamische Diagramm
nicht klappt, deshalb erst im Formular ermitteln und die Werte in die Tabelle.

Code:
txtMittelwert = Application.WorksheetFunction.average(((txtSchlamm_prozentual_1_Schicht)), (txtSchlamm_prozentual_2_Schicht), (txtSchlamm_prozentual_3_Schicht))
 leider funktioniert der Code nur, wenn ich alle drei Felder mit Werten fülle, bei Füllung von zwei Felder wir aber der Mittelwert über drei Felder ermittelt.
zB: 10 und 15 sollte 12,5 erscheinen, es wird aber 8,3333333 angezeigt.
Weiß eventuell jemand was ich hier falsch mache.!
mfg. Juergen
Top
#2
Hallo Juergen,

(18.04.2016, 19:23)Windlaeufer schrieb:  leider funktioniert der Code nur, wenn ich alle drei Felder mit Werten fülle, bei Füllung von zwei Felder wir aber der Mittelwert über drei Felder ermittelt.
zB: 10 und 15 sollte 12,5 erscheinen, es wird aber 8,3333333 angezeigt.

Kommt da nicht eine Fehlermeldung?
Gruß Stefan
Win 10 / Office 2016
Top
#3
Hallo Stefan,
leider kommt keine Fehlermeldung, die Daten werden schön in die Tabelle eingetragen, aber leider mit
falscher Berechnung. Allerdings bei Füllung aller drei Felder wird richtig gerechnet

mfg. Juergen
Top
#4
Hallo,

könntest Du deine Datei hier hochladen?
Gruß Stefan
Win 10 / Office 2016
Top
#5
Hallo zusammen,

Stefan, ich glaube, dass die Textboxen mit Null vorbelegt sind. Denn sonst müsste, wie Du festgestellt hast auf jeden Fall eine Fehlermeldung kommen.

Mir fällt jetzt keine andere Lösung ein, als mit einer Schleife zu arbeiten, nach folgendem Muster:

Code:
Dim i As Long
Dim j As Long
Dim dblSumm As Double
For i = 1 To 3
 If IsNumeric(Me.Controls("txtSchlamm_prozentual_" & i & "_Schicht")) And Me.Controls("txtSchlamm_prozentual_" & i & "_Schicht") > 0 Then
   dblSumm = dblSumm + Me.Controls("txtSchlamm_prozentual_" & i & "_Schicht")
   j = j + 1
 End If
Next i
If j > 0 Then txtMittelwert = dblSumm / j
Gruß Atilla
Top
#6
Hallo Attila,

genau das war es, es klappt wunderbar.

Mein erster Besuch hier, und schon wird einem so schnell geholfen.
Meine Dank auch an Stefan.

Mfg. Juergen
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste