Hallo Leute,
erst nochmals vielen Dank für die Anregungen.
Hier nun der Quelltext - ich wollte ihn zuerst nicht posten, da das ein Programm ist, das in einer Firma verwendet wird.
Der absolute Ausschnitt ist jedoch zum Posten OK.
Das was ich benutze ist das MSFlexGrid.OCX, in dem Zahlenkolonnen stehen. In der Spalte Null ist eine Numerierung von 1-n. Die restlichen Spalten enthalten Zahlen mit 3 Nachkommastellen und Werten je nach Spalte von durchschnittlich 5 bis durchschn. 100.
Was ich bemerke ist: kleine Zahlen werden richtig im Durchschn. & Standardabweichung berechnet, große nicht.
==> Ab Werten > 50 doch die Professional Version?
) ?
*lach*
Vielleicht - wenns hilft…
Hier der Quellcode:
Private Sub ErgebnisRechnung()
Dim i As Long
Dim AnzahlWerte As Long
Dim j As Byte
Dim Wert As Double
On Error GoTo Fehler
'alle Werte 0 setzen
For j = 0 To 7
MW_Arr(j) = 0 'Datentyp Double, Definition global
SA_Arr(j) = 0
Next j
Messen.MousePointer = vbHourglass ’ Sanduhr auf Formular
AnzahlWerte = 0
For i = 1 To Wandlergrid.Rows - 1 ’ MITTELWERT SUMMATION
Wandlergrid.Row = i
Wandlergrid.Col = 0 'Check ob wirklich noch Spalte mit Eintrag (verhindert das Dividieren durch falschen Nenner)
If Wandlergrid.Text Like „[0-9]“ Then
AnzahlWerte = AnzahlWerte + 1
For j = 1 To 7 ’ Flexgrid zaehlt ab 0
Wandlergrid.Row = i ’ gehe in aktuelle Zeile
Wandlergrid.Col = j ’ gehe in aktuelle Spalte
Wert = CDbl(PunktInKomma(Wandlergrid.Text))
MW_Arr(j) = MW_Arr(j) + Wert
Next j
End If
Next i
If (AnzahlWerte 0) Then ’ Division durch 0 verhindern
For j = 1 To 7
MW_Arr(j) = MW_Arr(j) / (AnzahlWerte) 'Mittelwert berechnen
Next j
End If
For i = 1 To AnzahlWerte 'STANDARDABWEICHUNG
For j = 1 To 7
Wandlergrid.Row = i ’ gehe in aktuelle Zeile
Wandlergrid.Col = j 'Rauschwert
Wert = CDbl(PunktInKomma(Wandlergrid.Text))
SA_Arr(j) = SA_Arr(j) + (Wert - MW_Arr(j)) ^ 2
Next j
Next i
If (AnzahlWerte 0) And (AnzahlWerte 1) And (AnzahlWerte 2) Then ’ Division durch 0 verhindern
For j = 1 To 7
SA_Arr(j) = ((1 / (AnzahlWerte - 1)) * SA_Arr(j)) ^ 0.5
Next j
End If
ZeilenZaehler = ZeilenZaehler + 1
Wandlergrid.Rows = Wandlergrid.Rows + 5
Wandlergrid.Row = ZeilenZaehler
'Mittelwert
Wandlergrid.Col = 0
Wandlergrid.Text = „MW“
For j = 1 To 7
Wandlergrid.Col = j
Wandlergrid.Text = KommaInPunkt(MW_Arr(j), 2)
Next j
'Standardabweichung
Wandlergrid.Rows = Wandlergrid.Rows + 2 ’ weiter nach unten
Wandlergrid.Row = ZeilenZaehler + 2
Wandlergrid.Col = 0
Wandlergrid.Text = „SA“
For j = 1 To 7
Wandlergrid.Col = j
Wandlergrid.Text = KommaInPunkt(SA_Arr(j), 2)
Next j
Messen.MousePointer = vbDefault
GoTo Weiter
Fehler:
MsgBox "Ein Fehler ist aufgetreten: " & Error(Err), vbOKOnly + vbCritical
Weiter:
Ende:
End Sub
Soweit der Quelltext.
Über neue Anregungen freue ich mich.
Gruß Helmut