Ich versuche folgendes: ich moechte eine Funktion in VBA programmieren, in die ich einen Bereich (in der Regel eine Spalte) sowie ein Quantil (z.B. 10% fuer das obere 10% Quantil) eingeben kann und welche mir dann fuer die Werte im ausgewaehlten Bereich den Mittelwert aller Werte im oberen 10%-Quantil ausgibt.
Meine Idee ist: ich zaehle wieviele Werte im Bereich ueberhaupt sind (z.B. 190). Berechne dann von der Anzahl den entsprechenden Quantilswert (z.B. 10%, also hier: 19) und schreibe dann den Wert der Funktion KGRÖßTE fuer k= 190-19=171, 190-18=172, 190-17=173 usw. in einen Vektor. Anschließend lasse ich mir den Mittelwert fuer alle Eintraege im Vektor ausgeben.
Mein Code sieht bisher wie folgt aus:
Function UpperTailMean(Bereich As Range, Quantil As Integer) As Double
Dim n As Integer
Dim i As Integer
Dim start As Integer
Dim taillength As Integer
Dim vektor() As Double
Debug.Print "test1"
n = Application.WorksheetFunction.Count(Bereich)
taillength = Application.WorksheetFunction.Round((Quantil / 100) * n, 0)
start = n - taillength + 1
ReDim vektor(taillength + 1)
Debug.Print "test2"
For i = 1 To taillength
vektor(i) = Application.WorksheetFunction.Large(Bereich, start + i)
Next i
UpperTailMean = Application.WorksheetFunction.Average(vektor)
End Function
Aufruf: debug.Print UpperTailMean(Application.Workbooks("Test.xlsm").Worksheets("Tabelle1").Range("A3:A210"),10)
Fehler: Laufzeitfehler 9 : Index außerhalb des gültigen Bereichs
Wer kann mir weiterhelfen?