Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Diagrammachse automatisch formatieren

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Diagrammachse automatisch formatieren (7384 mal gelesen)
CAD.TM
Mitglied



Sehen Sie sich das Profil von CAD.TM an!   Senden Sie eine Private Message an CAD.TM  Schreiben Sie einen Gästebucheintrag für CAD.TM

Beiträge: 26
Registriert: 18.02.2011

erstellt am: 14. Jul. 2012 23:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

kaum ist ein Problem gelöst habe ich wieder ein neues:

Diesmal geht es um die Skalierung der y-Achse. In einer Tabelle habe ich mehrere y-Werte, deren Maxima und Minima immer wieder andere Werte annehmen und in einem Diagramm dargestellt werden sollen. Dabei beginnt die y-Achse standardmäßig bei 0, was aber ungünstig ist wenn sich die y-Werte beispielsweise zwischen 60 und 65 bewegen. Natürlich kann ich die y-Achse manuell anpassen aber wenn sich das Maximum auf z.B. 100 ändert, ist es im Digramm nicht mehr zu sehen...

Kann ich irgendwie einstellen, dass die Skala der y-Achse immer automatisch beim kleinsten Wert beginnt und beim höchsten endet. Noch besser wäre wenn sie bei z.B. 0,9*Minimum beginnt und bei 1,1*Maximum endet.

Hat da jemand eine Idee?

Vielen Dank.

Tom

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Beverly
Mitglied
Dipl.-Geologe (Rentner)


Sehen Sie sich das Profil von Beverly an!   Senden Sie eine Private Message an Berverly  Schreiben Sie einen Gästebucheintrag für Berverly

Beiträge: 394
Registriert: 11.08.2007

erstellt am: 15. Jul. 2012 08:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CAD.TM 10 Unities + Antwort hilfreich

Hi Tom,

es gibt keine Einstellung, mit der das möglich wäre. Du könntest es höchstens per VBA lösen.

------------------
Bis später,
Karin

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Thomas Harmening
Moderator
Arbeiter ツ




Sehen Sie sich das Profil von Thomas Harmening an!   Senden Sie eine Private Message an Thomas Harmening  Schreiben Sie einen Gästebucheintrag für Thomas Harmening

Beiträge: 2897
Registriert: 06.07.2001

Das Innerste geäussert
und aufs Äusserste verinnerlicht

erstellt am: 15. Jul. 2012 10:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CAD.TM 10 Unities + Antwort hilfreich


XL2003-Diagramm_bei_Doppelklick_skalieren_der_Y_Achse.zip

 
Mit ALT & F11 in den VBA-Editor wechseln, EINFÜGEN / MODUL und untenstehenden Code einfügen.
Diagramname, Tabellenblattname und Bereich anpassen.
Diagramm anklicken und Makrozuweisen.

Code:
Sub Diagramm1_Klicken_Auf()
 
  ActiveSheet.ChartObjects("Diagramm 1").Activate 'Namen anpassen
 
  With ActiveChart.Axes(xlValue)
      .MaximumScale = WorksheetFunction.Max(Sheets("Tabelle1").Range("C2:C9")) * 1.1 'Bereich anpassen
      .MinimumScale = WorksheetFunction.Min(Sheets("Tabelle1").Range("C2:C9")) * 0.9 'Bereich anpassen
      .MinorUnitIsAuto = True
      .MajorUnitIsAuto = True
      .Crosses = xlAutomatic
      .ReversePlotOrder = False
      .ScaleType = xlLinear
      .DisplayUnit = xlNone
  End With
 
  ActiveWindow.Visible = False
  Range("A1").Select 'um den Fokus vom Diagramm zu entfernen
 
End Sub

Per Klick auf das Diagramm skaliert sich die Y Achse.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CAD.TM
Mitglied



Sehen Sie sich das Profil von CAD.TM an!   Senden Sie eine Private Message an CAD.TM  Schreiben Sie einen Gästebucheintrag für CAD.TM

Beiträge: 26
Registriert: 18.02.2011

erstellt am: 15. Jul. 2012 12:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Genial! Vielen Dank!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Beverly
Mitglied
Dipl.-Geologe (Rentner)


Sehen Sie sich das Profil von Beverly an!   Senden Sie eine Private Message an Berverly  Schreiben Sie einen Gästebucheintrag für Berverly

Beiträge: 394
Registriert: 11.08.2007

erstellt am: 15. Jul. 2012 15:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CAD.TM 10 Unities + Antwort hilfreich

Hi,

in VBA kann man zu 99% aller Fälle auf Select und Activate verzichten - bei Diagrammen ebenso, dann wird auch das Schließen des Diarammfensters und erneutes Selektieren einer Zelle überflüssig, um ins Tabellenblatt zurückkehren zu können:

Code:
Sub Diagramm1_Klicken_Auf()
  With ActiveSheet.ChartObjects(1).Chart.Axes(xlValue)
  .MaximumScale = WorksheetFunction.Max(Sheets("Tabelle1").Range("C2:C9")) * 1.1 'Bereich anpassen
  .MinimumScale = WorksheetFunction.Min(Sheets("Tabelle1").Range("C2:C9")) * 0.9 'Bereich anpassen
'  .MinorUnitIsAuto = True
'  .MajorUnitIsAuto = True
'  .Crosses = xlAutomatic
'  .ReversePlotOrder = False
'  .ScaleType = xlLinear
'  .DisplayUnit = xlNone
  End With
End Sub

Das Diagramm muss man nicht unbedingt mit dem Namen ansprechen, man kann auch einen Index verwenden. Das macht sich sehr günstig, falls man das Diagramm löscht und ein neues einfügt, denn dann könnte möglicherweise der Name nicht mehr stimmen. Bei mehreren Diagrammen im Tabellenblatt richtet sich der Index danach, in welcher Reihenfolge die Diagramme erstellt wurden.

Die im Code auskommentierten Zeilen sind eigentlich überflüssig, da es die Standardeinstellungen sind.

------------------
Bis später,
Karin

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Comos User
Mitglied



Sehen Sie sich das Profil von Comos User an!   Senden Sie eine Private Message an Comos User  Schreiben Sie einen Gästebucheintrag für Comos User

Beiträge: 112
Registriert: 23.03.2010

erstellt am: 16. Jul. 2012 09:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CAD.TM 10 Unities + Antwort hilfreich

Hi,

wenn man sich das anpassen der Bereiche auch noch sparen will

Code:
Sub Diagramm1_Klicken_Auf()
  With ActiveSheet.ChartObjects(1).Chart
  .Axes(xlValue).MaximumScale = WorksheetFunction.max(.SeriesCollection(1)) * 1.1
  .Axes(xlValue).MinimumScale = WorksheetFunction.min(.SeriesCollection(1)) * 0.9
  End With
End Sub


bei einer belibiegen Anzahl von Datenreihen etwas aufwendiger

Code:
Sub Diagramm1_Klicken_Auf()
Dim min As Double
Dim max As Double
min = 1.79769313486231E+308
max = -1.79769313486231E+308

  With ActiveSheet.ChartObjects(1).Chart
    For Each ser In .SeriesCollection
      min = WorksheetFunction.min(ser.Values, min)
      max = WorksheetFunction.max(ser.Values, max)
    Next
   .Axes(xlValue).MaximumScale = max * 1.1
   .Axes(xlValue).MinimumScale = min * 0.9
  End With
End Sub


Mal nebenbei, wenn ich die Axenskalierung auf Automatic belasse erhalte ich fast das selbe Ergebniss.
Sogar noch besser, weil gerundet (110 wir nicht zu 99 sondern zu 100).


[EDIT]man hätte gleich von vorn lesen sollen, natürlich gibt es diese Einstellung (siehe Anhang)

Gruß
Peter

[Diese Nachricht wurde von Comos User am 16. Jul. 2012 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Z.Sch.
Mitglied


Sehen Sie sich das Profil von Z.Sch. an!   Senden Sie eine Private Message an Z.Sch.  Schreiben Sie einen Gästebucheintrag für Z.Sch.

Beiträge: 7
Registriert: 14.10.2014

erstellt am: 14. Okt. 2014 07:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CAD.TM 10 Unities + Antwort hilfreich

Guten Morgen zusammen,
ist ja super mit dem Code.
Ich müsste den bei mir allerdings etwas anpassen und das funktioniert nicht so ganz.-
Folgendes:
Ich habe ein Diagramm das ähnlich einem Gant Diagramm aussieht. Die x Achse (unten) nimmt das Datum einer Spalte auf und die horizontale sekundärachse macht was sie will. Sie kann ich nicht auf "auto" einstellen, da ich nicht auswählen kann, dass die Werte "Automatische Auswahl basierend auf Daten" gewählt werden.
Wie könnte denn der Code für die Horizontale Sekundärachse aussehen? (Das Datum ist z.b. in Spalte F6:F50)
Danke für eure Hilfe
Mfg

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Beverly
Mitglied
Dipl.-Geologe (Rentner)


Sehen Sie sich das Profil von Beverly an!   Senden Sie eine Private Message an Berverly  Schreiben Sie einen Gästebucheintrag für Berverly

Beiträge: 394
Registriert: 11.08.2007

erstellt am: 15. Okt. 2014 08:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CAD.TM 10 Unities + Antwort hilfreich

Hi,

also so richtig schlau werde ich aus deinem Beitrag nicht - geht es darum, das Maximum/Minimum der Horizontalen Sekundärachse per VBA einzustellen? Dann nach diesem Prinzip:

Code:
.Axes(xlCategory, xlSecondary).MaximumScale = 10

------------------
Bis später,
Karin

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz