(Balken-) Diagramm: dynamische Achsenskalierung
Hallo,
ich mehrere gleich aufgebaute Diagramme erstellt.
Es werden jeweils 12 Werte (für die zwölf Monate) abgebildet. Die Achsenskalierung soll automatisch mit dem Minimum der Werte beginnen und mit dem Maximum enden.
Das Minimum soll NICHT bei Null sein, sondern bei dem ersten Wert der größer ist als Null!
Kann man das irgendwie zaubern? VBA? Formel? Keine Ahnung wie!
Hilfe wäre spitze!
Besten Dank!
PS: hier ist schon ein recht ähnliches Problem! Ich kann allerdings die Datei nicht runterladen und habe daher auch nicht den Code!
http://www.supportnet.de/threads/1500057
Antwort schreiben
Antwort 1 von Beverly vom 20.08.2019, 15:36 Options
Hi,
und weshalb kannst du die Datei nicht herunterladen? Der Link funktionert doch.
Bis später,
Karin
Antwort 2 von sickboy1 vom 20.08.2019, 16:06 Options
..weil mir bei diesem PC (Arbeit) die entsprechenden Rechte fehlen!
Antwort 3 von Beverly vom 20.08.2019, 16:33 Options
Hi,
hier ist der Code
Option Explicit
Sub min_max_anpassen()
'**************************************************
'* 23.02.06, geändert 05.08.06 *
'* erstellt von Karin, http://beverly.excelhost.de*
'* beverly@excelhost.de *
'**************************************************
Dim chDiagramm As Chart ' Variable für das Diagrammobjekt
' Prozedur verlassen wenn aktive Tabelle nicht Tabelle1 ist
If ActiveSheet.Name <> "Tabelle1" Then Exit Sub
' Prozedur verlassen wenn keine numerischen Werte für Minimum und Maximum
If Not IsNumeric(Cells(1, 2)) Or Not IsNumeric(Cells(2, 4)) Then Exit Sub
' Prozedur verlassen wenn Maximum kleiner als Minimum
If Cells(2, 4) < Cells(1, 4) Then Exit Sub
' Falls das Diagramm aktivi ist, zur Sprungmarke Ende gehen
On Error GoTo Ende
' Diagramm 1 der Variablen zuweisen
Set chDiagramm = Worksheets("Tabelle1").ChartObjects("Diagramm 1").Chart
With chDiagramm.Axes(xlValue)
.MinimumScale = Cells(1, 4)
.MaximumScale = Cells(2, 4)
End With
Ende:
' Variable leeren
Set chDiagramm = Nothing
End Sub
Bis später,
Karin
Antwort 4 von sickboy1 vom 21.08.2019, 11:35 Options
Danke Dir erstmal!
Da ich in VBA nicht wirklich bewandert bin, muss ich erstmal ein bisschen rumprobieren!
Wenn ich das richtig sehe, wird die NULL als Minimum aber auch verwendet, oder?
Das soll nämlich eigentlich genau nicht der Fall sein!
LG!
Antwort 5 von Beverly vom 21.08.2019, 14:40 Options
Hi,
nein, dass siehst du nicht richtig: in D1 wird das darzustellende Minimum und in D2 das Maximum als Zahlenwert eingetragen - sie sind also frei wählbar durch den Benutzer. Wenn allerdings als Minimum 0 eingetragen wird, wird 0 logischerwesie als Minimum im Diagramm genommen. Das gilt aber genauso auch für das Maximum.
Bis später,
Karin
Antwort 6 von sickboy1 vom 22.08.2019, 09:38 Options
So gaaanz langsam komme ich dahinter!
Vielleicht sollte ich mein Anliegen nochmal etwas konkretisieren:
Die Daten für die Grafik(en) sind in einem Tabellenblatt "Daten".
Die Grafiken befinden sich in einem anderen Tabellenblatt "Grafiken".
Insgesamt sind es ...schätzungsweise... 80 Grafiken.
Ich würde ungerne eine Hilfstabelle machen, in der ich von den ca. 80 Tabellen aus denen die Daten für die Grafik gezogen werden nochmas das jeweilige Minimum und das Maximum herausziehe.
Am besten wäre es, wenn ich der Grafik quasi sagen könnte: " Schaue in den Bereich XY auf dem Tabellenblatt "Daten", nimm die höchste Zahl als Maximum der Achse und nimm das Minimum (aber nicht die Null) als Minimum der Achse.
Und das dann für alle Graiken.
Zu viel verlangt?
Überhaupt Verständlich?
Antwort 7 von peko vom 22.08.2019, 13:45 Options
Hallo,
danke, konnte ich auch gut gebrauchen.
Gruß
Peter
Antwort 8 von Beverly vom 22.08.2019, 15:40 Options
Hi,
da ich den konkreten Aufbau deiner Arbeitsmappe nicht kenne, kann ich auch nur allgemein antworten: durchlaufe in einer Schleife deine Hilfstabelle, ermittle z.B. mit Application.WorksheetFunction.Max bzw. Min die Zelle mit dem Maximum/Minimum und weise sie dem entsprechenden Diagramm mit diesem Codeteil von oben zu:
Set chDiagramm = Worksheets("Tabelle1").ChartObjects(inSchleifenzaehler).Chart
With chDiagramm.Axes(xlValue)
.MinimumScale = Cells(ZeileMin, SpalteMin)
.MaximumScale = Cells(ZeileMax, SpalteMax)
End With
Bis später,
Karin
Antwort 9 von sickboy1 vom 23.08.2019, 13:11 Options
Tag!
Danke für die Hilfe!
Ich denke damit bekomme ich das hingebastelt!!
Großartig! :-)