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]
