Thema Datum  Von Nutzer Rating
Antwort
Rot Optimierung für mehrere Zeitpunkte (Datum) ausführen
26.11.2013 16:09:07 Gast1187
NotSolved

Ansicht des Beitrags:
Von:
Gast1187
Datum:
26.11.2013 16:09:07
Views:
1717
Rating: Antwort:
  Ja
Thema:
Optimierung für mehrere Zeitpunkte (Datum) ausführen

Hallo zusammen,

ich führe eine Ereignistudie "Event Study" im Rahmen meiner Masterarbeit durch und habe ein Makro zur Berechnung meiner Daten geschrieben. Im Grunde soll Excel für ein vorgegebenes Datum eine Optimierung mithilfe des SolverTools durchführen, was auch super gelingt.

Ich habe in einem 1. Schritt die Funktion "ifind_date" definiert, die mir die Zeile (Row), in der das gesuchte Datum ("Event_date") steht, angibt! Das gesuchte Datum steht in der Definition von "Event_date" und lautet in diesem Fall "22.01.2008". Abhängig von der Zeile in der das Datum steht, wird die Optimierung für die 5 zuvorliegenden Tage durchgeführt (im Code entspricht dies dem Event_window = 5; 5 steht dabei wiederum für die Anzahl von Zeilen).

Meine Frage ist nun, wie ich das Ganze so programmieren kann, dass Excel die Optimierung für mehrere Zeitpunkte bzw. Daten durchführt. Denn ich habe eine Liste von Ereignissen, die ich untersuchen möchte. Ich habe also in einem anderen Tabellenblatt ("Event_list") z.B. 5 Zeilen mit jeweils einem Datum und Excel soll genau die beschriebene Optimierung für jedes Datum nacheinander durchführen.

Muss ich das Problem wieder mit einer For-Schleife angehen? Kriege es nicht auf die Reihe und würde mich über Eure Hilfe freuen!!! Danke!

Gruss :)

 


Function ifind_date(mySheet As Object, myDate As String) As Integer

    ifind_date = -1

    For i = 3 To mySheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
        If mySheet.Range("A" & i).Value = CDate(myDate) Then
            ifind_date = i
        End If
    Next i

End Function
Sub Fitting_final()

    Dim i As Integer 'Row counter
    Dim Event_window As Byte

        Event_window = 5
        Event_date = ifind_date(Sheets("LS_Optimization"), "22.01.2008") - 1
    
                        'Setting boundaries for dates entered:
                        If Not Event_date > 2 Then
                            MsgBox "Event window or date not specified correctly!"
                            Exit Sub
                        End If
                    
                        If Not Event_date - Event_window + 1 > 2 Then
                            MsgBox "Event window or date not specified correctly!"
                            Exit Sub
                        End If
    
            ' Calculating the sum of squared differences over the event window:
            Range("P1") = "Sum_Sq.Differences"
            Range("P2").Formula = "=SUM(G" & (Event_date - Event_window + 1) & ":G" & (Event_date) & ")"
            
     For i = Event_date To (Event_date - Event_window + 1) Step -1
    
            'Setting L=0,5 as standard model set-up:
            Range("Q1") = "L_Opt(Ew)"
            Range("Q2") = ".5"
            
            'Calculating CDSmodel spread with user-defined funtion:
            Range("F2") = "CDSmodel_OLD"
            Range("$F$" & i).Formula = "=(CDSspread_new(RC[-3],RC[-4],R2C9,RC[-2],R2C10,R2C12,R2C13,R2C11))*10000"
            
            'Computing squared Difference between CDSmodel_OLD and CDSmarket:
            Range("G2") = "Sq. Difference"
            Range("$G$" & i).Formula = "=(((CDSspread_new(RC[-4],RC[-5],R2C17,RC[-3],R2C10,R2C12,R2C13,R2C11))*10000) - RC[-2])^2"
        
            'Finding the minimal value for L:
            Range("Q2") = ".001"

            SolverReset
                    SolverOk SetCell:=Range("P2"), MaxMinVal:=2, ValueOf:=0, ByChange:=Range("Q2"), _
                    Engine:=1, EngineDesc:="GRG Nonlinear"
                    'Add the constraint to the problem
                    SolverAdd CellRef:=Range("Q2"), Relation:=3, FormulaText:=".000000001"
                    'Solve the model but do not display the Solver Results dialog box / Finish and keep the final results
                    SolverSolve UserFinish:=True
                    SolverFinish KeepFinal:=1

            'Calculating new CDSmodel spread based on new L:
            Range("N2") = "CDSmodel_NEW"
            Range("$N$" & i).Formula = "=(CDSspread_new(RC[-11],RC[-12],R2C17,RC[-10],R2C10,R2C12,R2C13,R2C11))*10000"

       Next i

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 Optimierung für mehrere Zeitpunkte (Datum) ausführen
26.11.2013 16:09:07 Gast1187
NotSolved