Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
460to464
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
460to464
460to464
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Variables Diagramm ??

Variables Diagramm ?
25.07.2004 11:51:58
Erich
Hallo EXCEL-Freunde,
ich habe für eine Cash-Flow-Rechnung einen Liquiditätsplan erstellt,
der über einen Zeitraum von 26 Jahren auch die Möglichkeit bietet,
ab einem bestimmten Jahr (frei bestimmbar) den kumulierten Liqui-Zufluss
zu ermitteln.
Nun hätte ich das gerne auch so flexibel in einem Diagramm;
ein "Grund-Diagramm" habe ich bereits erstellt.
Aber wie kann ich es variabel gestalten; das heißt, wenn ich die kumulierten
Werte ab 2006 errechnen lasse, soll sich auch das Diagramm an diese Laufzeit !!!
- das bedeutet ab 2006 !! - anpassen. Grundsätzlich bildet das Diagramm alle
26 Jahre ab - die benötige ich aber dann nicht.
Ich habe die Musterdatei hochgeladen:
https://www.herber.de/bbs/user/8865.xls
Besten Dank für eine Hilfe!
mfg
Erich
AW: Variables Diagramm ?
K.Rola
Hallo,
denke mal, das ist am einfachsten mit dem Autofilter unf zwei Formeln zu
machen. Sieh dir mal das Beispiel an:
https://www.herber.de/bbs/user/8866.xls
Gibt es einen bestimmten Grund, warum die Berechnung auf manuell stand?
Ich habs mal auf automatisch eingestellt, damit du die Wirkung gleich
erkennen kannst.
Gruß K.Rola
AW: Variables Diagramm ?
Erich
Hallo K.Rola,
besten Dank für den Vorschlag; die manuelle Einstellung war ein Versehen.
Habe mich jedoch für die Lösung von Rainer entschieden.
mfg
Erich
AW: Variables Diagramm ?
Ramses
Hallo
nachdem ich nun schon gepröbelt habe, hier auch noch mein Vorschlag:
Kopiere den Code in das Klassenmodul deiner Tabelle
VB-Editor Starten mit "Alt"+"F11"
Doppelklick auf "Tabelle6(Liplan)"
und dort den Code im Codefenster rechst reinkopieren
Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Integer Dim tarYear As Integer, lastR As Integer Dim dataSrc As String, dataLab As String Dim wks As Worksheet, diaSh As Chart Dim kumDia As Diagram If Target.Address(False, False) <> "B1" Then Exit Sub dataSrc = "" dataLab = "" Set wks = Worksheets(ActiveSheet.Name) Set diaSh = Charts(1) tarYear = wks.Cells(1, 2) For i = 1 To wks.Cells(65536, 1).End(xlUp).Row If wks.Cells(i, 1) = tarYear Then lastR = i Exit For End If Next i With diaSh .ChartTitle.Text = "Kumuliert nach " & tarYear .SeriesCollection(1).XValues = "=Liplan!R" & i & "C1:R28C1" '=Liplan!A14:A26 .SeriesCollection(1).Values = "=Liplan!R" & i & "C6:R28C6" End With diaSh.Select End Sub
Gruss Rainer
Anzeige
AW: Variables Diagramm ?
Erich
Hallo Rainer,
besten Dank - geniale Lösung!!
Nun wollte ich noch optimieren, in dem ich die Skalierung nach oben und unten
flexibel anpasse.
Habe dazu in der Spalte F mit min und max die Werte ermittelt.
Trotz vorheriger Aufzeichnung mit dem Recorder gelingt es mir aber nicht
diese Werte für die Skalierung zu verwenden.
Habe die aktualisierte Datei nochmals hochgeladen:
https://www.herber.de/bbs/user/8867.xls
Besten Dank nochmals für eine weitere Hilfe!!
mfg
Erich
AW: Variables Diagramm ?
Ramses
Hallo
Erstelle zwei Variablen in denen du die jeweiligen Werte holst
myLow = Worksheetfunction.Min(Range("B1:B30")
myHigh = Worksheetfunction.Max(Range("B1:B30")
Dann kannst du das ganz einfach einbauen
With diaSh
.ChartTitle.Text = "Kumuliert nach " & tarYear
.MinimumScale = myLow
.MaximumScale = myHigh
.SeriesCollection(1).XValues = "=Liplan!R" & i & "C1:R28C1" '=Liplan!A14:A26
.SeriesCollection(1).Values = "=Liplan!R" & i & "C6:R28C6"
End With
Gruss Rainer
Anzeige
Danke - Rainer; superperfekt und flexibel!! o.T.
Erich
.
Doch noch ein Problem
Erich
Hallo Rainer,
hallo EXCEL-Freunde,
jetzt bin ich am verzweifeln!
Ich will das Makro in meine Originaldatei einfügen, bei der die Jahreszahlen
in A34 bis A59 stehen und die Werte in P34 bis P59.
Das Startjahr ist B32.
Wie muss ich den Code anpassen; siehe unten; er bringt bei den Zeilen
mit den Fragezeichen die Fehlermeldung:
Die XValues-Eigenschaft des Series-Objektes kann nicht festgelegt werden!!
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim tarYear As Integer, lastR As Integer, myLow As Integer, myHigh As Integer
Dim dataSrc As String, dataLab As String
Dim wks As Worksheet, diaSh As Chart
Dim kumDia As Diagramm1
If Target.Address(False, False) <> "B32" Then Exit Sub
dataSrc = ""
dataLab = ""
Set wks = Worksheets(ActiveSheet.Name)
Set diaSh = Charts(1)
tarYear = wks.Cells(32, 2)
For i = 34 To wks.Cells(65536, 1).End(xlUp).Row
If wks.Cells(i, 1) = tarYear Then
lastR = i
Exit For
End If
Next i
myLow = WorksheetFunction.Min(Range("p34", "p59")) - 1
myHigh = WorksheetFunction.Max(Range("p34", "p59")) + 1
With diaSh
.ChartTitle.Text = "Kumuliert nach " & tarYear

'? ändern auf Bereich P34 bis P59 ?
.SeriesCollection(1).XValues = "=Liplan p.a.!R" & i & "C1:R59C1"
.SeriesCollection(1).Values = "=Liplan p.a.!R" & i & "C16:R59C16"
'?
End With
With diaSh.Axes(xlValue)
.MinimumScale = myLow
.MaximumScale = myHigh
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
.Crosses = xlAutomatic
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
diaSh.Select
End Sub

Besten Dank für eine Hilfe!
mfg
Erich
Anzeige
AW: Doch noch ein Problem
Ramses
Hallo
änder die Zeilen in
.SeriesCollection(1).XValues = "='Liplan p.a.'!R" & i & "C1:R59C1"
.SeriesCollection(1).Values = "='Liplan p.a.'!R" & i & "C16:R59c16"
Lerzeichen erfordern das einschliessen des Tabellennamens in Hochkommas
Grundsätzlich würde ich niemals Leerzeichen in Tabellennamen einsetzen, sondern allenfalls zur Trennung einen "Underline" verwenden.
Liplan_p.a.
Gruss Rainer
AW: Doch noch ein Problem
Erich
Hallo Rainer,
noch nicht ganz, habe jetzt die Tabelle auf Liplanpa geändert und die Zeilen
sehen so aus:
.SeriesCollection(1).XValues = "Liplanpa!R" & i & "C1:R59C1"
.SeriesCollection(1).Values = "Liplanpa!R" & i & "C16:R59C16"
Jetzt erhalte ich bei der zweiten Zeile die Fehlermeldung:
Die Values-Eigenschaft des Series-Objektes kann nicht festgelegt werden!!
Noch eine Idee?
Besten Dank!
mfg
Erich
Anzeige
AW: Doch noch ein Problem
Ramses
Hallo
nachdem es bisher funktioniert hat, keine Ahnung.
Kannst du die Datei mal hochladen oder direkt mailen ?
Mailadresse findest du in den Profilen.
Gruss Rainer
nicht zu fassen!
Erich
Hallo Rainer,
die Originaldatei ist zu groß. Ich habe aber mal die betroffenen Blätter
in die andere Datei rüberkopiert, so dass alle Daten, Zeilen, Spalten wie
im Original sind.
In dieser kleinen Datei funzt das bestens (auch mit der Lösung von Björn!).
Ich muss wohl in meiner großen Datei irgendeinen Makel haben, weil bei
..Values das makro streikt.
Habe trotzdem mal die kleine Datei nochmals hochgeladen
(mit beiden Lösungen); wie gesagt dort funktionierts; muss an meiner großen
basteln und irgendwas finden?
https://www.herber.de/bbs/user/8874.xls
Trotzdem allerbesten Dank!
mfg
Anzeige
AW: nicht zu fassen!
Ramses
Hallo
Tut mir leid,... aber wie soll ich Fehlersuche betreiben wenn es geht ?
Gruss Rainer
abgespeckte Datei mit Fehler
Erich
Hallo Rainer,
nachdem ich einfach nicht fündig werde, habe ich die Originaldatei abgespeckt mit
Daten und lade diese nochmals hoch - mit dem Fehler (den ich nicht finde):
https://www.herber.de/bbs/user/8876.xls
Besten Dank falls Du noch Geduld hast.
mfg
Erich
Frag mich nicht warum...
25.07.2004 20:05:59
Björn
Hallo Erich,
hallo Rainer,
damit Erich nicht immer zwei Pfade bedienen muss, antworte ich mal hier.
Warum es so ist, wie es ist, weiß ich auch nicht. Tatsache ist aber, wenn man für Xvalues und values statt "R und C" "Z und S" verwendet geht's. Ach ja ausserdem verlangt das Programm nun bei Xvalues ein "=" vor dem Blattnamen.
Eine funktionierende Lösung für meinen Vorschlag sieht somit folgendermaßen aus:

Private Sub Chart_Activate()
Dim Startjahr As Integer, zaehler_1 As Integer
Startjahr = ThisWorkbook.Sheets("Liplanpa").Cells(32, 2)
For zaehler_1 = 34 To 59
If ThisWorkbook.Sheets("Liplanpa").Cells(zaehler_1, 1) = Startjahr Then
With ActiveChart.SeriesCollection(1)
.XValues = "=Liplanpa!Z" & zaehler_1 & "S1:Z59S1"
.Values = "=Liplanpa!Z" & zaehler_1 & "S16:Z59S16"
End With
With ActiveChart.Axes(xlValue)
.MinimumScale = ThisWorkbook.Sheets("Liplanpa").Cells(62, 16)
.MaximumScale = ThisWorkbook.Sheets("Liplanpa").Cells(63, 16)
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
.Crosses = xlAutomatic
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
ActiveChart.ChartTitle.Characters.Text = "Nettozufluss kumuliert ab " & Startjahr
Exit For
End If
Next zaehler_1
End Sub

Und für Rainer's Lösung muss es nun lauten:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim tarYear As Integer, lastR As Integer, myLow As Integer, myHigh As Integer
Dim dataSrc As String, dataLab As String
Dim wks As Worksheet, diaSh As Chart
Dim kumDia As Diagramm1
If Target.Address(False, False) <> "B32" Then Exit Sub
dataSrc = ""
dataLab = ""
Set wks = Worksheets(ActiveSheet.Name)
Set diaSh = Charts(1)
tarYear = wks.Cells(32, 2)
For i = 34 To wks.Cells(65536, 1).End(xlUp).Row
If wks.Cells(i, 1) = tarYear Then
lastR = i
Exit For
End If
Next i
myLow = WorksheetFunction.Min(Range("P34", "P59")) - 1
myHigh = WorksheetFunction.Max(Range("P34", "P59")) + 1
With diaSh
.ChartTitle.Text = "Kumuliert nach " & tarYear
.SeriesCollection(1).XValues = "=Liplanpa!Z" & i & "S1:Z59S1"
.SeriesCollection(1).Values = "=Liplanpa!Z" & i & "S16:Z59S16"
End With
With diaSh.Axes(xlValue)
.MinimumScale = myLow
.MaximumScale = myHigh
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
.Crosses = xlAutomatic
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
diaSh.Select
End Sub

Warum das so ist, kann vielleicht Rainer sagen. Ich nicht.
Gruß
Björn
Anzeige
Da kriegst du echt die Krise... :-)
Ramses
Hallo
warum das so funktioniert,... weiss wohl nur Big Billy
With diaSh
.ChartTitle.Text = "Kumuliert nach " & tarYear
'Funktioniert
.SeriesCollection(1).XValues = "Liplanpa!R" & i & "C1:R59C1"
'Funktioniert nicht
'.SeriesCollection(1).Values = "=Liplanpa!R" & i & "C16:R59C16"
'Funktioniert
.SeriesCollection(1).Values = "=Liplanpa!Z" & i & "S16:Z59S16"
With .Axes(xlValue)
.MinimumScale = myLow
.MaximumScale = myHigh
End With
End With
Gruss Rainer
AW: Da kriegst du echt die Krise... :-)
Erich
Hallo Rainer,
freut mich, dass das noch erkannt wurde!
Da wäre ich nie draufgekommen!
Das Forum ist einfach Spitze und unschlagbar in der Kreativität!!
Also nochmals Besten Dank!
mfg
Erich
Anzeige
...ich frage nicht - ich bin begeistert!
Erich
Hallo Björn,
allerbesten Dank - Hauptsache für mich: es funzt!
mfg
Erich
Danke für die Rückmeldung, gerne wieder - o. T.
25.07.2004 23:14:12
Björn
AW: Variables Diagramm ?
25.07.2004 13:40:40
Björn
Hallo Erich,
Karola und Rainer waren mal wieder schneller als ich, aber dafür konnte ich Deine Nachfrage zur Skalierung mit berücksichtigen.
Zunächst ein Hinweis zu Deinen Min/Max-Werten. Ich würde in Zelle F31 folgendes schreiben:
=AUFRUNDEN(MIN(F3:F28);-1)
und in Zelle F32 analog
=AUFRUNDEN(MAX(F3:F28);-1)
Der Vorteil ist, dass nun auf eine Stelle vor dem Komma aufgerundet wird. Ach ja, Aufrunden bedeutet bei Excel aufrunden des Betrages , d. h. negative Werte werden kleiner (aus -15 wird -20).
Ansonsten habe ich Dein Problem mit folgendem Code gelöst:

Private Sub Chart_Activate()
Dim Startjahr As Integer, zaehler_1 As Integer
Startjahr = ThisWorkbook.Sheets("Liplan").Cells(1, 2)
For zaehler_1 = 3 To 28
If ThisWorkbook.Sheets("Liplan").Cells(zaehler_1, 1) = Startjahr Then
With ActiveChart.SeriesCollection(1)
.XValues = "=Liplan!R" & zaehler_1 & "C1:R28C1"
.Values = "=Liplan!R" & zaehler_1 & "C6:R28C6"
End With
With ActiveChart.Axes(xlValue)
.MinimumScale = ThisWorkbook.Sheets("Liplan").Cells(31, 6)
.MaximumScale = ThisWorkbook.Sheets("Liplan").Cells(32, 6)
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
.Crosses = xlAutomatic
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
ActiveChart.ChartTitle.Characters.Text = "Nettozufluss kumuliert ab " & Startjahr
Exit For
End If
Next zaehler_1
End Sub

Dieser Code muss im VBA-Editor eingetragen werden, indem Du auf Diagramm1 (Netto kumuliert) doppelklickst und dann den Code einfügst.
Der Unterschied zu Rainers Lösung besteht im Wesentlichen darin, dass nur wenn Du Dir das Diagramm ansehen willst, dieses aktualisiert wird. Ausserdem ist der Bereich in dem die Daten stehen müssen bei mir fest vorgegeben. Bei Rainer ist's da variabler.
Gruß
Björn
Anzeige
Auch Klasse!!
Erich
Hallo Björn,
auch ne tolle Variante; jetzt kann ich sogar auswählen, was besser in meinen Ablauf
passt!
Hochinteressant was man sogar mit Diagrammen alles automatisieren kann.
Besten Dank auch an Dich!
mfg
Danke für die Rückmeldung - Gruß Björn - o. T.
25.07.2004 14:31:56
Björn
Nochmal Hilfe!
Erich
Hallo Björn,
habe nochmal eine Frage - siehe mein letzter Beitrag an Ramses.
mfg
Erich
AW: Nochmal Hilfe!
25.07.2004 18:01:34
Björn
Hallo Erich,
unter der Annahme, dass die Min/Max-Formeln in den Zellen P62 und P63 stehen,
müsste das Makro für meine Lösung so aussehen:
Private Sub Chart_Activate()
Dim Startjahr As Integer, zaehler_1 As Integer
Startjahr = ThisWorkbook.Sheets("Liplanpa").Cells(32, 2)
For zaehler_1 = 34 To 59

If ThisWorkbook.Sheets("Liplanpa").Cells(zaehler_1, 1) = Startjahr Then

With ActiveChart.SeriesCollection(1)
.XValues = "=Liplanpa!R" & zaehler_1 & "C1:R59C1"
.Values = "=Liplanpa!R" & zaehler_1 & "C16:R59C16"
End With

With ActiveChart.Axes(xlValue)
.MinimumScale = ThisWorkbook.Sheets("Liplanpa").Cells(62, 16)
.MaximumScale = ThisWorkbook.Sheets("Liplanpa").Cells(63, 16)
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
.Crosses = xlAutomatic
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
ActiveChart.ChartTitle.Characters.Text = "Nettozufluss kumuliert ab " & Startjahr
Exit For

End If

Next zaehler_1
Gruß
Björn
Anzeige
AW: Nochmal Hilfe!
Erich
Hallo Björn,
auch Dir nochmals besten Dank; siehe der Einfachheit halber meine Antwort an Ramses.
mfg
Erich
Ast geschlossen - o. T.
Björn

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige