Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1120to1124
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
Inhaltsverzeichnis

Standardabweichung VBA

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

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Standardabweichung VBA
26.11.2009 17:06:15
Erich
Hi Vorname, ( zu Vornamen und Nicknames schau bitte mal in die Forums-FAQ )
Zitat:

NickNames sind nicht erwünscht.
Diese Frager werden bei der Beantwortung nicht gerade bevorzugt behandelt.
Nenne Deinen Vornamen, damit man Dich ansprechen kann.
So eine Ahnung, woran das liegt, habe ich schon.
Die Ursache vermute ich nicht in der Fkt. STABW() oder dem Aufruf mit WorksheetFunction.StDev().
Kann es sein, dass du die Fkt. in VBA mit anderen Argumenten aufrufst als in Excel?
Wenn du schreibst: "worksheetfunction.stdev(summe(0,0),summe(j,i))",
dann werden der Fkt. nur zwei Argumente - zwei Zahlen - übergeben. Ist das so gewollt?
Wie lautet deine entsprechende Excelformel?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Standardabweichung VBA
26.11.2009 17:33:19
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
Anzeige
AW: Standardabweichung VBA
26.11.2009 18:20:53
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)
26.11.2009 23:50:44
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
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige