974 Aufrufe
Gefragt in Tabellenkalkulation von
Guten Tag,

ich habe einige Diagramme mit Sekundärer Achse in Verwendung. Diese werden für unterschiedliche Marktgebiete automatisch befüllt. Dies erfordert, dass die Achsen dynamisch angepasst werden. Nun habe ich das Problem das die primäre und sekundäre Achse nicht "zusammen passen" (siehe Bild) - zB. der 10% Wert der sekundären Achse befindet sich unterhalb der 1. Hauptgitternetzlinie.


Ein händisches Anpassen der Achsen für jedes Diagramm ist sehr aufwendig.

Ich habe leider kein Script gefunden, dass die Achsen in ein "korrektes" Verältnis setzt.

Danke für eure Hilfe.

www.raiba.at/others/vorlage.png

1 Antwort

0 Punkte
Beantwortet von
Hallo Tissi,

ich behelfe mir dabei mit etwas halbautomatischem:
Die Achsen werden über Einträge im Tabellenblatt gesteuert.

- Das Diagramm ist in "Diagramm1"
- Im Tabellenblatt mit den Daten stehen die Werte, die die Achsen skalieren:
O2&O3 Werte für die Skalierung der X-Achse
O4 Tick X-Achse
O7&O8 Werte für die Skalierung der 1. Y-Achse
O9 Tick 1. Y-Achse
O11&O12 Werte für die Skalierung der 2. Y-Achse
O13 Tick 2. Y-Achse

-Bei Änderung eines Eintrages (hier O2...O13) wird das Diagramm aktualisiert.
- Folgenden Code ins Tabellenblatt mit den Daten

Private Sub Worksheet_Change(ByVal Target As Range)

On Error Resume Next
Select Case Target.Address

Case "$O$2", "$O$3", "$O$4", "$O$5", "$O$6", "$O$7", "$O$8", "$O$9", "$O$10", "$O$11", "$O$12", "$O$13"

With Charts("Diagram1").Axes(xlCategory)
.MinimumScale = Application.WorksheetFunction.Min(Range("O2:O3"))
.MaximumScale = Application.WorksheetFunction.Max(Range("O2:O3"))
.MajorUnit = Range("O4")
End With

With Charts("Diagram1").Axes(xlValue)
.MinimumScale = Application.WorksheetFunction.Min(Range("O7:O8"))
.MaximumScale = Application.WorksheetFunction.Max(Range("O7:O8"))
.MajorUnit = Range("O9")
End With

With Charts("Diagram1").Axes(xlValue, xlSecondary)
.MinimumScale = Application.WorksheetFunction.Min(Range("O11:O12"))
.MaximumScale = Application.WorksheetFunction.Max(Range("O11:O12"))
.MajorUnit = Range("O13")
End With


End Select
End Sub

Gruß
Busmaster
...