Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Problem mit zweiter y-Achse im Diagramm
21.10.2019 15:44:23
Klexy
Hallo Gemeinde,
in der angehängten Datei habe ich zwei identisch erzeugte Diagramme aus 2 unterscheidlichen Datenquellen.
Die Datenquellen sind lila umrandet.
Die Summen-Spalte der Datenquelle wird durch die rosa Diagramm-Linie, die an der zweiten y-Achse hängt, dargestellt.
Wenn ich die Achsbeschriftung der zweiten y-Achse lösche (egal ob per Hand oder mit dem in der Datei hinterlegten Makro Achsbeschriftung_loeschen) verhalten sich die rosa Linien in beiden Diagrammen unterschiedlich.
Bei Diagramm 1 bleibt die Linie oben am Diagrammrand.
Bei Diagramm 2 "fällt" die Linie mitten in die Diagrammfläche.
Das erwünschte Verhalten ist bei Diagramm 1, weil ich die Linie anschließend farblos mache, um am oberen Diagrammrand nur die Summenwerte stehen zu haben.
Bei den meisten Diagrammen funktioniert das einwandfrei, bei manchen aber nicht. Warum?
Wenn einer der Werte (z.B. Stuttgart) ganz leer ist, bleibt die rosa Linie außerdem nicht gerade, sondern kriegt bei den Nullstellen einen Zacken NACH OBEN an den Diagrammrand.
Die Makros, mit denen die Diagramme erzeugt werden, sind auch in der Datei enthalten (Diagramm_erstellen_1 und Diagramm_erstellen_2). Beide Makros rufen die gleichen Untermakros auf. Im Untermakro Diagramm_erstellen_Teil_2 habe ich die Problemstelle markiert: DiesDiagramm.Axes(xlValue, xlSecondary).Delete
https://www.herber.de/bbs/user/132633.xlsm

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Problem mit zweiter y-Achse im Diagramm
21.10.2019 18:30:00
Beverly
Hi,
weshalb löschst du denn die Sekundärachse? Dadurch skaliert sich die Linie an der Primärachse. Blende einfach die Achsenbeschriftung aus, dann passiert das nicht - also anstelle
DiesDiagramm.Axes(xlValue, xlSecondary).Delete
dieses
DiesDiagramm.Axes(xlValue, xlSecondary).TickLabelPosition = xlNone

Dein anderes Problem hängt damit zusammen, dass deinen Linien eigentlich keine geraden Linien sind sondern aus unterschiedlichen Y-Werten bestehen (wie du diese geraden Linie erstellt hast ist mir schleierhaft). Du musst für diese beiden Linien je eine extra Spalte mit den Werten 100 verwenden und dann als Beschriftung die Spalte I auswählen - habe ich im Anhang mal realisiert.
https://www.herber.de/bbs/user/132644.xlsm
In deiner Prozedur Diagramm_erstellen_Teil_1 kannst du auf die geanze Selektiererei verzichten indem du den relevanten Code nach diesem Prinzip schreibst:
    With DiesDiagramm.SeriesCollection(1).Fill
.Visible = msoTrue
.ForeColor.RGB = ABC_Farbe_1
.Solid
End With

Außerdem ist mir völlig schleierhaft, weshalb du innerhalb der Prozedur Diagramm_erstellen_Teil_2 einmal ActiveChart schreibst und einmal DiesDiagramm.
Du kannst den gesamten Code außerdem straffer gestalten, wenn du alles in eine With-Anweisung packst - also
With DiesDiagramm


Anzeige
AW: Problem mit zweiter y-Achse im Diagramm
22.10.2019 09:20:21
Klexy
Hallo Karin,
vielen Dank, das TickLabelPosition = xlNone ist genau das, was geholfen hat.
Warum die Linien als invers und logarithmisch grade sind, weiß ich nicht. Ich hab versucht, es so aussehen zu lassen, wie ich es haben will und bin draufgekommen, dass es funktioniert - aber eben nicht immer. Ich weiß auch nicht.
Das mit dem Select kommt später größtenteils weg, aber während ich an den Sachen schraube, weiß ich immer gern, wo ich grad zugange bin. Das Activechart kommt auch aus dem Frühstadium der Entwicklung und aus Copy/Past von verschiedenen Einzelteilen, die ich jetzt zu einem Ganzen zusammenfüge. Ich hab den Code noch nicht final überarbeitet und alle Inkonsistenzen beseitigt.
Am Ende wird dann nochmal alles gestrafft.
In der Beispieldatei steht oben überall nur [ZELLBEREICH] . Ich vermute mal, dass du sie mit einem neueren Excel gemacht hast. Wenn ich mit Rechtsklick auf "Daten auswählen" geh, ist alles ausgegraut. Ich habe hier 2010.
Danke.
Klexy
Anzeige
AW: Problem mit zweiter y-Achse im Diagramm
22.10.2019 10:12:05
Beverly
Hi,
mir sind die neuen Auswahlmöglichkeiten im Forum für die verwendete Excelversion noch nicht vertraut und ich hatte nur 2013 gelesen und nicht das "vor" beachtet. Dann kannst du natürlich den Beschriftungslabel keine Werte aus anderen Zellen direkt zuweisen - das geht im dem Fall nur so, dass du jeweils ein Beschriftungslabel markierst, "=" (ohne Anführungszeichen) in die Bearbeitungsleiste schreibst, den Cursor in die betreffende Zelle setzt und Enter drückst und das für jedes Beschriftungslabel wiederholst. Dadurch wird das Beschriftungslabel mit dem Zellinhalt verknüpft (was ab Version 2013 von Excel integriert wurde).
Du kannst das aber auch komplett anders lösen, indem du die horizontale Sekundärachse einblendest und unter "Daten auswählen..." für die Reihe S als Achsenbeschriftungsbereich die Spalte I angibst. Dann aktivierst du für die sekundäre Vertikalachse bei den Achsenoptionen unter "Horizontale Achse schneidet" -&gt Automatisch. Dadurch wird die Rubrikenbeschriftung oberhalb es Diagramms mit deinen Werten aus Spalte I angezeigt (habe ich mal für das untere Diagramm realisiert, im unteren habe ich den Ausganszustand nach Einblenden der sekundären Horizontalachse belassen) und du brauchst keine Kopfstände für die Beschriftungslabel machen.
https://www.herber.de/bbs/user/132648.xlsm


Anzeige
AW: Problem mit zweiter y-Achse im Diagramm
22.10.2019 18:14:58
Klexy
Eigentlich geht es mit dem Ausblenden der vertikalen Sekundärachse schon perfekt.
Trotzdem hab ich deinen Vorschlag mal ausprobiert, aber bei mir geht folgender Punkt nicht:
"unter "Daten auswählen..." für die Reihe S als Achsenbeschriftungsbereich die Spalte I angibst"
Ich kann der Achse allein keinen Quellbereich zuordnen. Nur dem gesamten Diagramm. Das wundert mich etwas, denn ich kann mich erinnern, das mit früheren Versionen (2003) schon entsprechend eingestellt zu haben. Vielleicht ist das ein Feature, das zwischendrin mal weg war und später wieder da? Ich mach nicht so viel mit Diagrammen und fand den Zugang dazu in 97 und 2003 viel einfacher und vor intuitiver.
Anzeige
AW: Problem mit zweiter y-Achse im Diagramm
22.10.2019 19:49:41
Beverly
Doch, das geht auch bei dir, daran wurde nichts geändert. Beim Öffnen des Dialogs siehst du rechts die Achsenbeschriftung der Primärachse, da automatisch die 1. Datenreihe aktiv ist, die ja auf die Primärachse gezeichnet isr:
Userbild
Wenn du jedoch die Datenreihe S aktivierst, kannst du im rechten Fenster die Datenbeschriftung für die Sekundärachse über den Button "Bearbeiten" eintragen (bzw. den Bereich mit den Anzeigewerten auswählen), da diese Datenreihe auf die Sekundärachse gezeichnet ist:
Userbild


Anzeige
AW: Problem mit zweiter y-Achse im Diagramm
23.10.2019 17:34:49
Klexy
Erste Tests vielversprechend.
Ausführliche Antwort später.
Kannst du das bitte...
23.10.2019 23:26:36
Beverly
...nochmal im Detail erklären was ich nun testen soll. Und bitte an allen Stellen im Code das unnötige Select durch ordentlichen Code ersetzen.
Zu deinem 2. Problem: bei einer logarithmischen Skalierung kann es keine 0-Werte geben, da es keinen Logarithmus von 0 gibt. Ich verstehe sowieso nicht, wozu du bei der vertikalen Sekundärachse eine logarithmische Skalierung verwendest - da reicht doch eine standardmäßige Skalierung. In dem Fall musst du für die Y-Werte der Datenreihe den Wert 0 ansetzen.
https://www.herber.de/bbs/user/132708.xlsm


Anzeige
Nochmal bereinigt und 2 Probleme
24.10.2019 14:19:24
Klexy
Hallo Karin,
jetzt nochmal gestrafft, bereinigt und Select entfernt. Ich weiß gar nicht, warum ihr euch hier immer übers Select aufregt. Das beißt doch niemanden. Außerdem ist es, wie gesagt, nur temporär, damit ich mit F8 optisch verfolgen kann, was gerade passiert.
https://www.herber.de/bbs/user/132723.xlsm
Die beiden Hauptmakros (für Diagramm 1 und Diagramm 2) rufen jeweils 2 Hilfsmakros auf: Diagramm_erstellen_Teil_1 und Diagramm_erstellen_Teil_2
Im Anhang ist die Datei noch einmal mit 2 unterschiedlichen zweiten Hilfsmakros:
- Diagramm_erstellen_Teil_2 (alte Version, aber mit zweiter y-Achse ausblenden statt löschen)
- Diagramm_erstellen_Teil_2a (neue Version mit zweiter x-Achse einblenden, nach deinem Vorschlag).
Hauptmakro 1 läuft aktuell über Teil_2, Hauptmakro 2 läuft über Teil_2a. 2 und 2a sind jeweils austauschbar.
Das mit der eingeblendeten zweiten X-Achse funktioniert soweit, aber:
Problem 1 (Teil_2a):
Ich kann die Schriftgröße und -fette der Achse nicht per VBA ändern. Ich hab die Änderung mit dem Makro-Rekorder aufgezeichnet, aber beim Abspielen des aufgezeichneten Codes gibt es eine Fehlermeldung. Siehe Kommentar "hier hakt es". Verstehst du das?
Außerdem (mittlerweile eigentlich obsolet, aber trotzdem rätselhaft):
Problem 2 (Teil_2)
Wenn ich in der Summenspalte Nullwerte habe (rote Zahlen in den Tabellen von 1 auf 0 ändern), kommt eine Hinweismeldung, wenn ich die Achse auf xlLogarithmic ändere. Klar gibt es keinen Logarithmus von 0, aber das ist für das Ergebnis egal. Es sieht trotz Fehlermeldung so aus, wie es für mich aussehen soll.
Warum hilft hier das Application.DisplayAlerts = False nicht? Dazu ist es doch gedacht.
Andererseits funktioniert es tatsächlich auch ohne "ScaleType = xlLogarithmic" und ohne "ReversePlotOrder = True". In meinen ersten manuellen Tests ging es (bei sehr unterschiedlichen Diagrammen) nur mit. Keine Ahnung, warum. Ich hab viel herumprobiert.
Anzeige
Gut, du möchtest die Diagramme...
24.10.2019 19:11:11
Beverly
Hi,
...unbedingt mit einer logarithmischen Skalierung der sekundären Vertikalachse erstellen und du glaubst mir nicht, dass GENAU DAS dein Problem ist wenn du einen 0-Wert einträgst - da hilft auch kein DiyplayAlerts, denn dies ist ein Grundprinzip der Mathematik und nicht ein Fehler von Excel.
Ich hatte dir ja bereits den Lösungsvorschlag (den ich in meiner Mappe auch realisiert habe) gemacht, eine normale Skalierung der Achse zu verwenden, um dieses Problem zu umgehen. Das möchtest du jedoch nicht - deshalb kann ich dir bei diesem selbst verursachten und unnötigen Problem leider nicht weiterhelfen.
Die Beschriftung der Achse ändert man über die TickLabels:
    With DiesDiagramm.Axes(xlCategory, xlSecondary).TickLabels.Font
.Bold = msoTrue
.Size = 11
.Italic = msoFalse
.Name = "Calibri"
End With



Anzeige
Nein, möchte ich nicht, denn...
25.10.2019 01:01:21
Klexy
Hallo Karin,
... wie gesagt, ist das mittlerweile obsolte, weil ich es, wie gesagt, mittlerweile ohne "ScaleType = xlLogarithmic" und ohne "ReversePlotOrder = True" mache.
Ich wollte nur wissen, warum das DisplayAlerts hier nichts bringt, denn sonst kann man damit (zwar berechtigte, aber trotzdem) lästige Meldungen vermeiden.
Deinen Tip mit der Achsbeschriftung probier ich gleich morgen aus (aktuell bin ich nur am Handy).
Es kann aber...
25.10.2019 08:41:47
Beverly
Hi,
...irgendwie nicht stimmen, dass das Thema logarithmische Skalierung hinfällig ist, denn nach Ausführung des Codes aus deiner zuletzt hochgeladenen Mappe sieht diese wie folgt aus...:
Userbild


Anzeige
AW: Es kann aber...
25.10.2019 10:23:06
Klexy
Hallo Karin,
meinen Code Teil_2 habe so umstrukturiert, dass man es sowohl logarithmisch als auch linear machen kann. Daher die Kommentare:
    Application.DisplayAlerts = False
DiesDiagramm.Axes(xlValue, xlSecondary).ScaleType = xlLogarithmic ' auskommentieren für  _
lineare Achse
DiesDiagramm.Axes(xlValue, xlSecondary).ReversePlotOrder = True ' auskommentieren für  _
lineare Achse
Application.DisplayAlerts = True
Im richtigen Code läuft es mittlerweile linear (auskommentiert). Nichtsdestrotz hat mich interessiert, warum HIER DisplayAlerts nicht funktioniert.
Das mit TickLabels funktioniert prima. In der Microsoft-Dokumentation steht irreführend formuliert, dass es für "Teilstriche" ist. Ich habe das mit Hilfsintervallstriche gleichgesetzt, was falsch war. (aber wann seit Excel 2003 ist die Microsoft-Dokumentation jemals hilfreich gewesen? Zum Glück gibt es Peter Haserodt und andere).
Dass der Makro-Rekorder zunehmend Elemente GAR NICHT aufzeichnet, habe ich in den Zeiten seit Excel 97 mitbekommen. Dass er falsch aufzeichnet, ist für mich neu.
Nochmal vielen Dank für die ausführliche Hilfe. Hab viel gelernt. Und die Sachen auf deiner Website werde ich nach und nach auch durcharbeiten. Interessante Themenstellungen.
Bis dann
Klexy
2 Restprobleme
23.10.2019 21:54:14
Klexy
Hallo Karin,
das mit der eingeblendeten zweiten X-Achse funktioniert soweit,
Im Anhang ist die Datei noch einmal mit 2 unterschiedlichen Makros:
- Diagramm_erstellen_Teil_2 (alte Version, aber mit y-Achse ausblenden statt löschen)
- Diagramm_erstellen_Teil_2a (neue Version mit zweiter x-Achse).
Hauptmakro 1 läuft aktuell über Teil_2, Hauptmakro 2 läuft über Teil_2a. 2 und 2a sind austauschbar.
Problem 1 (Teil_2a):
Ich kann die Schriftgröße und -fette der Achse nicht per VBA ändern. Ich hab es mit dem Makro-Rekorder aufgezeichnet, aber beim Abspielen des Codes gibt es eine Fehlermeldung. Verstehst du das?
Problem 2 (Teil_2)
Wenn ich in der Summenspalte Nullwerte habe (rote Zahlen von 1 auf 0 ändern), kommt eine (sinnlose?) Hinweismeldung, wenn ich die Achse auf xlLogarithmic ändere. Da hilft auch Application.DisplayAlerts = False nicht. Warum?

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige