Clever-Excel-Forum

Normale Version: Dynamische Zeitreihe für Diagramm generieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich hoffe, dass ich hier eine Lösung für mein Problem finde, welches mich schon länger beschäftigt und ich in der Vergangenheit meistens sehr dreckig gelöst habe.
Vielleicht ist das Thema hier auch bereits schon behandelt worden, ich habe jedoch keine Ahnung, wonach ich genau suchen muss..

zu meinem Problem:

ich habe mehrere Ressourcen, die einen Monatswert sowie Start und Endwert haben.
z.B. sieht das dann so aus


Ressource 1

Start 01.01.2019
Ende 30.06.2019
mtl. Kosten 50€

Ressource 2
Start 01.05.2019
Ende 30.08.2019
mtl. Kosten 30€


das Ziel ist es, eine dynamische Grafik zu generieren, die mir den Gesamtkostenverlauf pro Monat anzeigt und bei der ich Ressourcen ab- und zuwählen kann.
Wenn ich mir anhand der Daten eine Zeitreihe in Spalten generiere, kann Pivotchart damit jedoch nicht umgehen.

Damit PivotChart mir die Daten korrekt ausgibt, müsste ich die Daten ja so aufbereiten:

Ressource 1  Monat1 50€
Ressource 1  Monat2 50€
Ressource 1  Monat3 50€
Ressource 1  Monat4 50€.....

Ressource 2  Monat1 0€
Ressource 2  Monat2 0€
Ressource 2  Monat3 0€
Ressource 2  Monat4 0€.....


es sind aber weit über 200 Ressourcen in meiner Tabelle, weshalb es nicht in Frage kommt, händisch die Datenreihe zu schreiben.

was wäre jetzt eine sinnvolle Herangehensweise an das Problem? Ein Makro, welches mir die Datenreihe in das Zielformat übergibt oder gibt es eine Funktion in Excel, die ich noch nicht kenne?

Helft uns Obi-Wan Kenobi, ihr seid unsere letzte Hoffnung! :19:

Danke vorab für eure Hilfe!

viele Grüße,
Tobi
Poste mal eine Besipieldatei !
Hi,

hier mal ein grobes Beispiel. Die Hilftstabelle ab Spalte F ist mein bisheriger Lösungsansatz.

Viele Grüße,
Tobi
mit VBA:


Code:
Sub M_snb()
   sn = Sheet1.Cells(1).CurrentRegion
   ReDim sp(UBound(sn), 12)
    
    For jj = 0 To UBound(sp, 2)
       sp(0, jj) = IIf(jj = 0, "'Name", jj)
    Next
    For j = 2 To UBound(sn)
      sp(j, 0) = sn(j, 1)
      For jj = Month(sn(j, 2)) To Month(sn(j, 3))
         sp(j, jj) = sn(j, 4)
      Next
    Next

    Sheet1.Cells(10, 1).Resize(UBound(sp) + 1, UBound(sp, 2) + 1) = sp
End Sub
(07.06.2019, 09:50)snb schrieb: [ -> ]mit VBA:


Code:
Sub M_snb()
   sn = Sheet1.Cells(1).CurrentRegion
   ReDim sp(UBound(sn), 12)
    
    For jj = 0 To UBound(sp, 2)
       sp(0, jj) = IIf(jj = 0, "'Name", jj)
    Next
    For j = 2 To UBound(sn)
      sp(j, 0) = sn(j, 1)
      For jj = Month(sn(j, 2)) To Month(sn(j, 3))
         sp(j, jj) = sn(j, 4)
      Next
    Next

    Sheet1.Cells(10, 1).Resize(UBound(sp) + 1, UBound(sp, 2) + 1) = sp
End Sub


Hi und Danke,

ist das der vollständige Code? Beim Ausführen läuft der in einen Fehler in Zeile 3 (Objekt erforderlich?)
VBA ist schon ein Weilchen her bei mir....
Benütze deine hochgeladene Datei zum Testen.

Und ja, diese Code reicht.

Und verwende F8 im Editor.

Zeile 3 (??) enthällt kein Referenz zu einem Objekt
(07.06.2019, 12:25)snb schrieb: [ -> ]Benütze deine hochgeladene Datei zum Testen.

Und ja, diese Code reicht.

genau das habe ich getan und da bekomme ich eben den Fehler.

Ich lade die Datei nochmal mit eingefügtem Code hoch
Deine erste Tablle hatte ein Sheet1, nun heisst er Tabelle1.

ändere im Code Sheet1 in Tabelle1