Thema Datum  Von Nutzer Rating
Antwort
Rot Code zur linearen Regression der Vlambda Kurve
28.01.2015 19:23:08 Sascha24
NotSolved
28.01.2015 21:00:33 Gast50833
NotSolved
28.01.2015 21:29:55 Gast12789
NotSolved
28.01.2015 21:38:43 Gast28264
NotSolved

Ansicht des Beitrags:
Von:
Sascha24
Datum:
28.01.2015 19:23:08
Views:
1111
Rating: Antwort:
  Ja
Thema:
Code zur linearen Regression der Vlambda Kurve

Hi,

 

ich bräuchte drngend Hilfe bei einem VBA-Code in Excel, der nicht funktioniert. Ich bekomme immer #Wert als Antwort.

Der Code soll die VLambda Kurve, zu der ich einzelne Datenpunkte gegeben habe, annähern, damit ich die zu den Werten zwischen den bereits gegebenen Datenpunkten ebenfalls den Y-Wert bestimmen kann. Da die Punkte so dicht beeinander liegen und es von der Genauigkeit genügt, nähere ich das ganze durch lineare Regression an. Dazu bestimme ich zuerst den x- wert (vL_X1), welcher dem übergebenem x Wert (X) am nächsten liegt. Dies geschieht mittels for Schleife (der Datensatz der VLambda Kurve umfasst 1024 Messwerte)

 

Anbei der Code 

Public Function VLambda(X As Double) As Double

    Dim vL_X1 As Double
    Dim vL_X2 As Double
    Dim vL_Y1 As Double
    Dim vL_Y2 As Double
    
    Dim vL_test As Double
    
    Dim i As Integer
    Dim s_i As Integer

    
    vL_X1 = Worksheets("V_Lambda").Cells(2, 1).Value - X
    
    
    For i = 3 To 1025
    
        vL_test = Worksheets("V_Lambda").Cells(i, 1).Value
        
        If Application.WorksheetFunction.Abs(vL_test - X) < Application.WorksheetFunction.Abs(vL_X1) Then
        
            vL_X1 = vL_test
            s_i = i
        End If

    Next i
    
    
    
    If vL_X1 <= 0 Then
    
        vL_Y1 = Worksheets("V_Lambda").Cells(s_i, 2).Value
    
        vL_X2 = Worksheets("V_Lambda").Cells(s_i + 1, 1).Value
        vL_Y2 = Worksheets("V_Lambda").Cells(s_i + 1, 2).Value
    Else
        vL_X2 = vL_X1
        vL_Y2 = Worksheets("V_Lambda").Cells(s_i, 2).Value
        
        vL_X1 = Worksheets("V_Lambda").Cells(s_i - 1, 1).Value
        vL_Y1 = Worksheets("V_Lambda").Cells(s_i - 1, 2).Value

    End If
    VLambda = (vL_Y2 - vL_Y1) / (vL_X2 - vL_X1) * (X - vL_X1) + vL_Y1

End Function

ich weiß, dass ich mit meinem Zugriff auf die Zellen s_i -+1 aus dem Bereich der definierten Zellen laufen könnte, jedoch ist dies momentan nicht das Problem.

 

Danke schonmal für eure Hilfe.

 

freundliche Grüße

 

Sascha24


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 Code zur linearen Regression der Vlambda Kurve
28.01.2015 19:23:08 Sascha24
NotSolved
28.01.2015 21:00:33 Gast50833
NotSolved
28.01.2015 21:29:55 Gast12789
NotSolved
28.01.2015 21:38:43 Gast28264
NotSolved