HERBERS Excel-Forum - das Archiv
Standardabweichung VBA
mctapt

Liebe VBA-Freunde,
ich habe ein Makro programmiert, welches die Standardabweichung ausrechnen soll.
Meine Code für die Standardabweichung in VBA lautet:
stabwsumme(j,i)= worksheetfunction.stdev(summe(0,0),summe(j,i))
Wenn ich die VBA-Werte mit meinen Excel Werten (Formel stabw) vergleiche, kommen unterschiedliche Werte raus. Habt Ihr eine Ahnung wieso das so ist?
Für eine kurze Rückmeldung wäre ich dankbar.
Gruß
mctapt

AW: Standardabweichung VBA
mctapt

Hallo Erik,
sry wegen den Vornamen. Mein Name ist Thomas.
Nein, gewollt war, dass es über mehrere Abschnitte (z.b. i=50) geht. zu erst wollte ich
worksheetfunction.stdev(summe(j,i))
schreiben. da kommt aber eine fehlermeldung, dass die stdev eigenschaft der worksheet function nicht zugeordnet werden kann. der versuch mit worksheetfunction.stdev(summe(0,0),summe(j,i)) war nur eine idee dem entgegenzukommen. ich weiß, dass so ein kleiner statistischer fehler auftritt, der geht aber gegen Null wenn man i sehr groß macht. Es tritt auch eine Different auf, wenn ich in Excel den Wert summe(0,0) einbezieht (außer bei i=1) dort wird der richtige wert ausgegeben. meine excelformel lautet z.b. stabw(b10:b60), wenn ich die summe(0,0) miteinbeziehe ist es analog stabw(b9:b60)
Gruß aus Frankfurt
Thomas
AW: Standardabweichung VBA
IngGi

Hallo Thomas,
wie Erich schon sagte, mit deiner Syntax werden nur die beiden Werte für Summe(0, 0) und Summe(j, i) berücksichtigt (also je nachdem, welchen Wert i und j gerade haben). Die anderen Werte deines Arrays bleiben unberücksichtigt. Um die WorksheetFunction nutzen zu können, müsstest du die Werte in einen Zellbereich schreiben, auf den du dich in der Funktion dann beziehst. Ansonsten müsstest du auf die WorksheetFunction verzichten und die Berechnung der Standardabweichung selbst programmieren.
Gruß Ingolf
Standardabweichung (Excel=VBA)
Erich

Hi Thomas,
ist dir inzwischen klar, warum "worksheetfunction.stdev(summe(j,i))" einen Fehler liefern muss?
summe(j,i) vermutlich eine Zahl, nehmen wir als Beispiel 4711.
STABW(4711) gibt einen Fehler, denn STABW braucht (sinnvollerweise!) mindestens zwei Argumente.
(Hast du mal in die Excelhilfe zu STABW geschaut?)
Du willst auch nicht wirklich stdev(summe(0,0),summe(j,i)) (also über zwei Zahlen) berechnet haben,
sondern die Standardabweichung über einer größere Anzahl von Zahlen,
z. B. alle Zahlen im Bereich B10:B60.
Probier das mal aus:

Sub tst()
' STABW bekommt 51 Argumente
MsgBox WorksheetFunction.StDev(Range("B10:B60"))
MsgBox WorksheetFunction.StDev(Cells(10, 2).Resize(51))
MsgBox WorksheetFunction.StDev(Range(Cells(10, 2), Cells(60, 2)))
' STABW bekommt 52 Argumente
MsgBox WorksheetFunction.StDev(Range("B9:B60"))
MsgBox WorksheetFunction.StDev(Cells(9, 2).Resize(52))
MsgBox WorksheetFunction.StDev(Range(Cells(9, 2), Cells(60, 2)))
End Sub
Noch eins: Es hat eine Weile gedauert, bis ich meinte, auf diese Weise antworten zu können/sollen -
wegen der Levels, die du angegeben hast. Ob "Excel gut" und auch "VBA gut" wirklich zutreffen?...
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort