Guten Abend,
ich habe mir in einem Excel-Projekt eine
Function
programmiert, welche mir den Inputwert in
"Tabelle1"
.Range(
"A:A"
) sucht und den dazugehörigen Wert aus Spalte B zurück gibt.
Ich habe jetzt noch in dieser Suchfunktion den Fall abgedeckt, dass wenn eine Kommazahl abgefragt wird, diese aber nicht so in der Tabelle vorkommt, auf ihre Vorletzte Kommastelle gerundet wird (also 0,987654 rund 0,98765). Dieser gerundete Wert wird der Funktion nun wieder zugeführt. Der Spaß verläuft also rekursiv. Wenn ich nun meine Funktion mit einem Wert füttere, welcher direkt in der Tabelle vorkommt, gibt Sie mir das Korrekte Ergebnis. Muss die Funktion aber erst einmal in die Rekursion gehen ist der Rückgabewert immer 0!
Option
Explicit
Dim
Ergebnis
As
Range
Dim
letzteZeile
As
Long
Dim
Datenbasis
As
Worksheet
Dim
DezSep
As
String
Dim
a
As
Integer
Dim
b
As
Double
Public
Function
QuantilFinder(q
As
Double
)
As
Double
Debug.Print
"Quantilsuche für "
& q
Set
Datenbasis = ThisWorkbook.Worksheets(
"Tabelle1"
)
letzteZeile = Datenbasis.Range(
"A"
& Rows.Count).
End
(xlUp).Row
With
Datenbasis
Set
Ergebnis = Datenbasis.Range(
"A2:A"
& letzteZeile).Find(q, LookIn:=xlValues, LookAt:=xlWhole)
If
Ergebnis
Is
Nothing
Then
DezSep = IIf(
"0.5"
* 2 = 1,
"."
,
","
)
a = Len(Str(Abs(q))) - InStrRev(
CStr
(Abs(q)), DezSep) - 1
q = WorksheetFunction.Round(q, a)
QuantilFinder (q)
Else
:
Debug.Print
"Quantil = "
& Ergebnis.Offset(0, 1).Value
QuantilFinder = Ergebnis.Offset(0, 1).Value
End
If
End
With
End
Function
Sub
test()
b = InputBox(
"b eingeben"
)
b = QuantilFinder(b)
Debug.Print
"Quantil = "
& b
End
Sub