Office: Dynamische Zeitreihenanpassung mit VBA

Helfe beim Thema Dynamische Zeitreihenanpassung mit VBA in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Profis! Schon lange her seit ich das letzte Mal hier war....... Gleich zur Aufgabenstellung: Ich baue derzeit ein ziemlich umfangreiches... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von trottlbua, 5. November 2009.

  1. trottlbua Erfahrener User

    Dynamische Zeitreihenanpassung mit VBA


    Hallo Profis!

    Schon lange her seit ich das letzte Mal hier war.......

    Gleich zur Aufgabenstellung:
    Ich baue derzeit ein ziemlich umfangreiches Excelmodell für Wirtschaftlichkeitsrechnungen neu zusammen. Um dynamisch den Betrachungszeitraum zu steueren, waren bis jetzt in allen relevanten Zellen Formeln, die sobald sie innerhalb dieses Zeitraumes lagen Werte ausgaben, ansonsten auf 0 waren.

    Der Bewertungszeitraum wird über 2 Zellen gesteuert - Anfangsjahr und Zeitraum.

    Da die ständige Befüllung der relevanten Zellen mit den Formeln (mehrere aber nicht alle worksheets - bis IV) ziemlich viel Speicherplatz verbraucht, würde ich gerne eine Lösung mit VBA finden. Der Code soll von der letzten vorhandenenen Spalte (also dem alten Endjahr) die Spalten bis zum neuen Endjahr weiterziehen.

    Jedes worksheet in dem dieses Vorgehen relevant ist, besteht nur aus solchen Zellen, d.h. man kann den Bereich ab Zeile 6 in diesen wks bis ganz unten verwenden um nichts zu vergessen.

    Bevor ich mich jetzt noch weiter im Selbstversuch betätige, würde ich gerne von den Profis erfahren wie ihr das Lösen würdet. Damit meine ich nicht unbedingt den Code, sondern eine kurze Beschreibung wie ich das am Besten aufbaue.

    Ich hoffe ich konnte alles halbwegs verständlich erklären.

    Freue mich schon auf Antworten!

    mfg
    Herbert
     
    trottlbua, 5. November 2009
    #1
  2. trottlbua Erfahrener User
    keine inputs?
     
    trottlbua, 9. November 2009
    #2
  3. miriki Erfahrener User
    Ich hab das Posting jetzt erst gesehen, aber auch nach 2, 3 mal durchlesen mit 1/2h Pause dazwischen fehlt mir irgendwie ein bißchen die Vorstellung, wie das ganze aussehen soll.

    Gruß, Michael
     
  4. trottlbua Erfahrener User

    Dynamische Zeitreihenanpassung mit VBA

    Hallo Michael!

    Danke für die Antwort! Werde morgen mal ein kleines Beispielfile hochladen, vielleicht erklärt das mehr!

    Lg
    Herbert
     
    trottlbua, 12. November 2009
    #4
  5. trottlbua Erfahrener User
    Hello Michael!

    Anbei ein Teil der Datei. Natürlich gibt es auch Blätter wo die Zeitreihen nicht vorkommen, d.h. diese müssen aus dem VBA code ausgenommen sein.

    Hab neben die Zellen eine kurze Beschreibung hingeschrieben - hoffe das erklärt meine Fragestellung besser.

    Dank im Voraus für eine Antwort!

    Lg
    Herbert
     
    trottlbua, 16. November 2009
    #5
  6. miriki Erfahrener User
    Hm, ja, glaube schon...

    Erster Ansatz wäre zwar ein VBA-Code, der auf "Change" von "c_startjr" reagiert. Aber vielleicht... geht es auch alles viel einfache und ohne VBA?

    Deine Formel in dcf!e11 überprüft ja schon, ob e$9 gefüllt ist und rechnet nur dann, läßt ansonsten die Zelle leer. Gleiches machen auch die Formeln in den Zellen darunter (wenn auch tlw. ohne das $ übrigens). Das wäre doch ein viel leichterer und offensichtlicher Ansatz...

    Wenn Du die Formeln aus e11:e36 bis zur Spalte iv durchziehst, brauchst Du nur noch dafür sorgen, daß die Überschrift mit den Jahreszahlen (Zeile 9) nur dann mit einem Jahr gefüllt wird, wenn es im Zeitraum ist.

    Code:
    e9: =wenn(d9+1<=c_endejr;d9+1;"")
    So oder so ähnlich müßte es doch schon gehen, oder nicht?

    Gruß, Michael
     
  7. trottlbua Erfahrener User
    Servus Michael!

    So war es ja beim alten Modell - das Problem ist, dass das Ziehen der Formeln bis IV eine Menge Speicherplatz braucht, auch wenn dann gar nichts angezeigt wird.

    Ich kann auch ein Steuerelement einbauen, dass zu drücken ist wenn sich der Zeitraum ändern soll (ruft dann den Code auf).

    Die Frage ist, wie ich am praktischten die Formeln und Formatierungen in den verschiedenen Blättern per VBA verlängern lasse (löschen ist ja nicht das Problem).

    Lg
    Herbert
     
    trottlbua, 16. November 2009
    #7
  8. miriki Erfahrener User

    Dynamische Zeitreihenanpassung mit VBA

    Wenn diese (über'n groben Daumen) 5000 Formeln bereits ein Speicherplatz-Problem auslösen, dann scheint Dein Rechner aber ein grundlegend anderes Problem zu haben. Hier werden in einigen Mappen 30.000 und mehr Formeln durchgerechnet, was sich zwar in kurzem Ruckeln bemerkbar macht, aber ansonsten kein ernsthaftes Problem darstellt.

    Aber ok, Ansatz per VBA... Das gestaltet sich auch nicht unbedingt ganz einfach, weil das Feld "c_ibn" sich nicht in der aktuellen Arbeitsmappe befindet. Es gibt mehrere Möglichkeiten, die Formeln zu aktualisieren, vor allem:

    "Change" - reagiert auf Änderungen in einer Zelle - Ausnahme: Durch Formeln (neu) berechnete Werte. Das fällt also für die Überwachung von "c_endejr" aus.

    Leider kriegt man auch nur das Feld "c_horizont" mit "Change" überwacht, nicht aber "c_ibn", da dies eben in einer anderen Mappe ist.

    "SelectionChange" - reagiert auf Bewwegung des Cursors - Das willst Du wahrscheinlich nicht, dann jede Cursorbewegung würde dann zu einem Ruckeln führen.

    Bleibt eigentlich nur "Calculate" - wird aufgerufen, wenn die Formeln neu durchgerechnet werden und ist damit irgendwo hinter "Change" anzusieden, was die Häufigkeit der Aufrufe (Rechenzeit) betrifft, denn nicht jedes "Change" zieht auch immer gleich ein "Calculate" nach sich - nur, wenn Formel-relevante Zellen verändert werden.

    Das wäre zumindest eine Alternative, denn ich schätze, das Einklinken in "Calculate" wird Dir dann genauso wenig Spaß bringen, wie das Ziehen der Formeln bis IV. Aber schauen wir mal...

    Der folgende Code im Modul von "I_Bewertungsparam" sollte tun, was Du möchtest:
    Code:
    Option Explicit
    
    Private Sub Formeln_aktualisieren()
    
        Dim i As Long
        Dim y1 As Long
        Dim x1 As Long
        Dim sht As Worksheet
        Dim y2 As Long
        Dim x2 As Long
    
        For i = 1 To 2
    
            y1 = 9
            x1 = 5
            Select Case i
                Case 1:
                    Set sht = Worksheets("dcf")
                    y2 = 36
                Case 1:
                    Set sht = Worksheets("eva")
                    y2 = 33
            End Select
            x2 = x1 + Range("c_endejr").Value - Range("c_startjr").Value - 1
    
            If (x2 > x1) Then
                sht.Range(sht.Cells(y1, x1 + 1), sht.Cells(y2, 256)).ClearContents
                sht.Range(sht.Cells(y1, x1), sht.Cells(y2, x1)).Copy Destination:=sht.Range(sht.Cells(y1, x1 + 1), sht.Cells(y2, x2))
            End If
    
        Next i
    
    End Sub
    
    Private Sub btn_Formeln_aktualisieren_Click()
    
        Formeln_aktualisieren
    
    End Sub
    
    Private Sub Worksheet_Calculate()
    
        Formeln_aktualisieren
    
    End Sub
    Ein Button namens "btn_Formeln_aktualisieren" gehört dann noch auf das Blatt. Dann kannst Du schauen, ob "Calculate" oder der Button die bessere Alternative ist und das jeweils andere Ereignis deaktivieren.

    Allerdings solltest Du nochmal die Formeln in Spalte "D" überprüfen, ob die Bezüge so wirklich korrekt sind nach dem Kopieren, oder ob vielleicht noch das eine oder andere $-Zeichen zu verteilen ist. Genauer konnte ich, wegen Zellbezügen auf eine andere Mappe, nicht testen.

    Gruß, Michael
     
  9. trottlbua Erfahrener User
    Danke für die rasche Antwort - werde es mir morgen mal genau ansehen und versuchen.

    Zwecks Speicherplatz - das sind nur 2 Blätter von vielen - da kommen ja noch Bilanz, GuV, Geldflussrechnung und einige Detailblätter dazu - also ein Haufen Formeln :-)

    Melde mich bei Erfolg!

    Lg
    Herbert
     
    trottlbua, 17. November 2009
    #9
Thema:

Dynamische Zeitreihenanpassung mit VBA

Die Seite wird geladen...
  1. Dynamische Zeitreihenanpassung mit VBA - Similar Threads - Dynamische Zeitreihenanpassung VBA

  2. Dynamischer Pfad

    in Microsoft Access Hilfe
    Dynamischer Pfad: Hallo ins Forum, ich habe eine Frage. Ich habe mir eine Datenbank in Access erstellt. Diese lade ich mir über Power Query in eine Excel Tabelle. Soweit alles kein Problem. Aber wie kann ich dort...
  3. dynamische Bezug auf Feiertagskalender in Formel "Nettoarbeitstage"

    in Microsoft Excel Hilfe
    dynamische Bezug auf Feiertagskalender in Formel "Nettoarbeitstage": Hallo Zusammen, ich habe leider ein paar Schwierigkeiten die Nettoarbeitstage von Mitarbeitern an verschiedenen Standorten in verschiedenen Bundesländern zu ermitteln. Irgendwie stehe ich gerade...
  4. Dynamische Verknüpfung von Dokumenten

    in Microsoft Word Hilfe
    Dynamische Verknüpfung von Dokumenten: Hi, ich muss 10 unterschiedliche Vertragsvorlagen, die aber alle identische Anlagen haben, im Word neu aufbauen. Bislang hatten wir LibreOffice im Einsatz. Dort hatte ich Globaldokumente angelegt...
  5. Mittelwert aus mehreren Spalten als dynamisches Array

    in Microsoft Excel Hilfe
    Mittelwert aus mehreren Spalten als dynamisches Array: Hallo liebes Forum, ich bin bei folgendem Problem ratlos: Ich berechne für verschiedene Dozenten Feedback anhand von 3 verschiedenen Kriterien. Die Stammdaten der Feedbacks stehen in einer...
  6. Erstellung eines Dynamischen Kalenders

    in Microsoft Excel Hilfe
    Erstellung eines Dynamischen Kalenders: Guten Morgen an Alle, ich hoffe, es geht euch soweit gut :) Ich wende mich heute an euch, weil ich gerade vollkommen verzweifle und irgendwie so ganz und garnicht weiterkomme und irgendwie...
  7. Erstellung eines Dynamischen Kalenders (ggf. VBA)

    in Microsoft Word Hilfe
    Erstellung eines Dynamischen Kalenders (ggf. VBA): Guten Morgen an Alle, ich hoffe, es geht euch soweit gut :) Ich wende mich heute an euch, weil ich gerade vollkommen verzweifle und irgendwie so ganz und garnicht weiterkomme und irgendwie...
  8. Dynamische Combobox mit zwei Bedingungen

    in Microsoft Excel Hilfe
    Dynamische Combobox mit zwei Bedingungen: Hallo ich bräuchte einen vba Code welcher eine dynamische Combobox befüllt. Zudem soll die Combobox alle schon eingetragenen Daten in einer Spalte beim Dropdown ausschiessen damit keine Doppelten...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden