Ich versuche Folgendes zu realisieren:
Ich möchte eine Funktion schreiben, bei der der Anwender zwei Zellenbereiche (i.d.R. Teile einer Spalte) auswählen kann. In meinem Kopf stelle ich mir dies als 2 Vektoren gleicher Länge vor, die der Anwender jedoch frei wählen kann.
Innerhalb der Funktion wird dann mit den beiden Vektoren gerechnet, z.B. wird paarweise die Differenz der Vektoreintraege gebildet und hinterher ein Mittelwert ausgegeben. Was mir vermutlich helfen würde, wäre zu wissen, wie ich bei einer Range z.B. A1:A10 auf den Wert in der 5. Zelle von oben zugreifen kann!?
Hier mein Versuch, bei dem ich die Range an einen Array übergebe:
Function test(range1 As Range, range2 As Range) As Double
Dim n As Integer
Dim i As Integer
Dim h() As Double
Dim x() As Double
Dim y() As Double
'If Application.WorksheetFunction.Count(range1) Application.WorksheetFunction.Count(range2) _
Then MsgBox "Einlesen fehlgeschlagen"
n = Application.WorksheetFunction.Count(range1)
ReDim x(n - 1) 'n = 20 dann array von 0 bis 19
ReDim y(n - 1)
x = range1.Value 'scheint nicht zu funktionieren, ich moechte das Eingelesene als Array haben
y = range2.Value
For i = 0 To (n - 1)
h(i) = (x(i) - y(i))
Next i
test = Application.WorksheetFunction.Average(h)
End Function