VBA - Code "Kopieren wenn"

  • Excel

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von petaod.

    VBA - Code "Kopieren wenn"

    Hallo zusammen,

    ich brauche eine Lösung für folgendes Problem.
    Ich habe Marktdaten im Zeitraum von 13:30:00 - 15:19:59. Für fast jede Sekunde gibt es auch einen Eintrag, nur manchmal kann es sein, dass nach bspw. 13:45:47 der nächste Eintrag erst 13:45:50 ist. (Also sozusagen 3 Sekunden in denen am Markt mal nichts passiert ist :) )
    Im Sheet1 sind meine Rohdaten. In Spalte A stehen die Uhrzeiten im Format hh:mm:ss, in Spalte B bis Y Zahlenwerte.
    Im zweiten "Sheet2" habe ich dann in Spalte A auch wieder die Uhrzeiten von 13:30:00 - 15:19:59, nur hier ist jede Sekunde durchgehend. (Also 5599 Einträge)
    Jetzt möchte ich, dass die Werte von Sheet1 in Sheet2 kopiert werden, wenn jeweils die Uhrzeiten übereinstimmen. D.H. in Sheet2 wären dann Daten mit teilweise leeren Zeilen zwischen B - Y (dort wo es keine Übereinstimmung gab, da die Sekunde nicht vorhanden war). Bei diesen leeren Zeilen soll dann der letzte verfügbare Wert kopiert werden.

    Ein kleines Beispiel:
    13:45:47 - hat Einträge
    13:45:48 - hat Einträge
    13:45:49 - KEINE Einträge, übernehme dann Einträge von 13:45:48
    13:45:50 - KEINE Einträge, übernehme dann Einträge von 13:45:48
    13:45:51 - hat Einträge

    Anbei noch 2 Screenshots - Im Sheet1 ist dort z.B. die 13:30:18 nicht vorhanden.
    Dort sollte dann in Sheet2 die leere Zeile sein und anschließend der Wert von 13:30:17 kopiert werden.

    Es wäre zusätzlich noch richtig cool, wenn beispielsweise in den Zeilen wo etwas zusätzlich kopiert worden ist in Spalte Z eine 1 oder so steht.
    Dann könnte ich für meine Statistik diese Werte besser nachvollziehen.

    Vielen Dank und Beste Grüße
    Max
    Bilder
    • Screenshot-1.PNG

      27,71 kB, 707×412, 133 mal angesehen
    • Screenshot-2.PNG

      15,79 kB, 533×459, 128 mal angesehen
    Ein möglicher Ansatz:
    1) Trage alle Zeilen von Sheet 1 in die entsprechende Zeile von Sheet2 ein.
    2) Fülle alle leeren Zeilen in Sheet2 mit dem darüberliegenden Wert. Wenn du eine Formel dafür verwendest, brauchst du noch nicht mal nachdenken.

    Alternative: Du kannst auch erst den kompletten Range mit der Formel füllen und danach die tatsächlich existierenden Werte aus Sheet1 überschreiben.
    Range("B2:Z9999").FormulaR1C1=R[-1]C"

    Du kannst aber auch den umgekehrten Ansatz gehen und im zweiten Sheet entsprechende intelligente SVERWEIS-Formeln auf das erste Sheet eintragen, dann benötigst du überhaupt kein VBA.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „petaod“ ()