Hallo zusammen,
bin völliger VBA-Neuling und habe mich durch googlen bis hierhin durchgehangelt. Ich möchte eine Funktion schreiben, die mir den Mittelwert eines Zellbereichs liefert, der bestimmten Kriterien entspricht. Wenn ich die Funktion im Debugging-Mode durchlaufe funktioniert alles prima und der richtig berechnete Wert steht in der Variable "OpenLoop". Wenn ich die Funktion in eine Zelle schreibe (also =OpenLoop()) bekomme ich den Fehler #Name?. Kann mir jemand helfen???
Danke schonmal
Public Function OpenLoop() As Double
Dim wks As Worksheet
Dim myRange As Range
Dim Min As Double
Dim Zelle As Range, ZeileStart As Variant, ZeileEnd As Variant
Set wks = ActiveSheet
With wks
'gesuchtes minimum in Spalte 2 (B) ab Zeile 3 suchen
Set myRange = .Range(.Cells(28, 2), .Cells(.Rows.Count, 2).End(xlUp))
Min = Application.WorksheetFunction.Min(myRange)
'Zeile des Minimums im Bereich
Zeile = Application.WorksheetFunction.Match(Min, myRange, 0)
'Zelle mit Minimum
Set Zelle = myRange.Range("A1").Offset(Zeile - 1, 0)
ZeileStart = Zelle.Row
'Endzeile festlegen
ZeileEnd = ZeileStart + 1
'Ermittlung der letzten Zeile, die das Kriterium erfüllt
While .Cells(ZeileEnd, 2) > -0.1
ZeileEnd = ZeileEnd + 1
Wend
'Um eines dekrementieren, da vor Start der Schleife bereits um eines inkrementiert wurde
ZeileEnd = ZeileEnd - 1
'Ermittlung Mittelwert
OpenLoop = Application.WorksheetFunction.Average(.Range(.Cells(ZeileStart, 3), .Cells(ZeileEnd, 3)))
End With
End Function
|