Thema Datum  Von Nutzer Rating
Antwort
Rot Rückgabewert von Funktion ist 0
22.02.2021 19:26:29 Till
NotSolved
22.02.2021 19:41:02 Gast15423
NotSolved
22.02.2021 19:49:20 Till
NotSolved
22.02.2021 19:50:53 Gast15423
*****
Solved
22.02.2021 19:58:25 Till
NotSolved
22.02.2021 20:03:58 Gast81840
NotSolved
22.02.2021 20:11:38 Till
NotSolved
23.02.2021 03:27:38 Gast15423
NotSolved

Ansicht des Beitrags:
Von:
Till
Datum:
22.02.2021 19:26:29
Views:
971
Rating: Antwort:
  Ja
Thema:
Rückgabewert von Funktion ist 0
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 'Ergebnis.Offset hat hier den Korrekten wert (immer/auch wenn es den Wert rekursiv ermitteln musste)
        QuantilFinder = Ergebnis.Offset(0, 1).Value 'liefert mir aber immer, wenn es mindestens einen rekursiven durchlauf hatte eine 0
        End If
    End With
End Function

Sub test()
    b = InputBox("b eingeben")
    b = QuantilFinder(b)
    Debug.Print "Quantil = " & b
End Sub

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Rückgabewert von Funktion ist 0
22.02.2021 19:26:29 Till
NotSolved
22.02.2021 19:41:02 Gast15423
NotSolved
22.02.2021 19:49:20 Till
NotSolved
22.02.2021 19:50:53 Gast15423
*****
Solved
22.02.2021 19:58:25 Till
NotSolved
22.02.2021 20:03:58 Gast81840
NotSolved
22.02.2021 20:11:38 Till
NotSolved
23.02.2021 03:27:38 Gast15423
NotSolved