Hallo,

[EMAIL PROTECTED] schrieb:
> Ich habe ein paar Ergänzungsvorschläge für Calc. Vielleicht
> kann ich euch ja auch helfen (Ich programmiere auch(Java, Delphi)) .

In Java kannst Du Deine Statiktik-Funktionswünsche selbst als AddInn
umsetzen, hierzu zunächst das SDK herunterladen und dort einen Überblick
verschaffen:
http://www.openoffice.org/dev_docs/source/sdk/
und dann einfach programmieren.
Ein Beispiel für ein Calc-Funktions-AddInn in Java gibt es zum Beispiel
hier:
OOo DannysCalcAddInFunctions-2004-11-13-03.zip
in:
http://kosh.datateamsys.com/~danny/OOo/Java-OOo/DannysCalcAddInFunctions
/PRERELEASE/?C=M;O=A

> Ich habe mich in letzter Zeit mit dem Basiswissen Statistik
> beschäftigt.

eigentlich nicht, Deine Funktionswünsche beziehen sich augenscheinlich
auf medizinische Fragen (wohl nicht nur aber auch)

> Folgende Funktionen fehlen noch in Calc.

da fehlen wohl noch mehr

> Basic kann ich nicht sehr gut programmieren. Hier habe ich
> versucht ein Makro zu programmieren.

Naja...

> Function MedianAbw As Double '(bereich as Range)

der Bereich muß vom Typ Variant sein

> bereich=C6:C15

?
ich denke der soll als Parameter übergeben werden, warum machst Du ihn
hier fix?

> med=Median(bereich)

geht doch nicht, MEDIAN() ist eine Calc-Tabellenfunktion, in Basic muß
sowas explizit aufgerufen werden, hier kurz für SUMME():

'...
oFunktion = createUnoService("com.sun.star.sheet.FunctionAccess")
Dim aArgumente(1) As Variant
aArgumente(0) = value
aArgumente(1) = value
Aufrufen = oFunktion.callFunction( "SUM", aArgumente() )
'...

immer müssen hierbei die englischen Funktionsnamen benutzt werden. Da
.callFunction nach meiner Erfahrung nicht immer zuverlässig
funktioniert, mache es am besten per Hand, beispielsweise:

dim x(0)
z = 0
for i=1 to UBound(bereich ,1)
        for j=1 to UBound(bereich ,2)
                if IsNumeric( bereich (i,j) ) then
                        x(z) = bereich (i,j)
                        z = z + 1
                        redim Preserve x(z)
                end if
        next j
next i
If Fix((z-1)/2) = (z-1)/2 Then
                median_wert = x(Fix((z-1)/2))
        Else
                median_wert = (x(Fix((z-1)/2))+x(Fix((z-1)/2)+1))/2
End If


> For Each Zelle In bereich
> i=i+Zelle.Value-med
> z=z+1
> Next Zelle

das ist eine VBA-Konstruktion, Du kannst in StarBasic *in dieser Weise*
nicht auf das Zellobjekt  zugreifen, weil Du es nicht als
Funktionsparameter einer benutzerdefinierten Calc-Funktion übergeben
kannst.
Da oben bereits das Array gelesen wurde und der Median bestimmt kannst
Du das so schreiben:

i=0
For j = LBOUND(x()) to UBOUND(x())-1
i=i+x(j)-median_wert
Next j


> MedianAbw=i\z

weil z wie obenstehend um eins größer als der belegte TEil des Arrays
ist:

MedianAbw=i\(z-1)




Gruß
Jörg

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Antwort per Email an