Clever-Excel-Forum

Normale Version: x-Achse in Diagramm anpassen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo Leute,

ich habe eine Vorlage, wo ich Daten für ein Monat importiere. Daraus soll ein Diagramm erstellt werden. Das funktioniert auch gut, dass Problem ist, dass auf der x-Achse 2x2 Tage zu viel dargestellt werden. Also ich importiere die Werte für Juni (1.06 bis 1.07) aber dann steht im Diagramm auf der x-Achse 30.5 bis 3.07. Und da es keine Werte für diese Tage gibt, habe ich vor den Kurven und nach den Kurven einen leeren Bereich. Denn möchte ich aber nicht haben. Klar kann ich manuell die x-Achse anpassen aber das ist nervig.

Ich verwende Excel 2013. Bei Diagrammen verwende ich eine XY-Punkt-Diagramm mit Linie und der Hauptintervall ist auf 1 Tag eingestellt.  

Kenn jemand eine Lösung, dass in dem Diagramm nur ein Monat(.1.06-1.07) dargestellt wird?

Gruß
Lycaner
Hallo

Leider kann ich nirgendwo deine Mappe finden.
Deshalb nur der allgemeine Hinweis das man Achsen auch als Text- oder Kategorie-Achse einstellen kann.
Andererseits sind X/Y-Diagramme immer eine Besonderheit.
Hallöchen,

wie sieht denn die Festlegung des Datenbereichs vor dem Datenimport aus und wie hinterher? In welchen Zellen stehen vor dem Import die Daten z.B. für den 1.5. bis 1.6. und wo nach dem Import die des 1.6. bis 1.7.?
Hallo,

jeder Monat wird in eine Excel-Arbeitsmappe importiert. Deswegen sind die Daten von Vormonat und nachfolge Monat in der aktuellen Arbeitsmappe nicht enthalten.

Gibt es ein konfi-Einstellung, wo man den Abstand von dem Diagramm-Rand zu dem dargestellten Graphen anpassen kann?

Anbei eine abgespeckte Beispieldatei.
jetzt aber die Beispieldatei[attachment=6177]
Hallo Lycaner,

ich habe bein kurzen Durchschauen in den Diagrammparametern auch keine Einstellungen gefunden. Da du aber in der Datei schon VBA code hast, und dich damit auskennst, kannst du ja:

1 Einmalig die Grenzen manuell setzen und dabei die Befehle in einem Macro aufzeichen,
2 Die überflüssigen Zeilen aus dem Makro entfernen und
3 Das Macro nach dem Einlesen eines Monats ausführen.
Hallöchen,

Du kannst in den Achsoptionen Minimum und Maximum einer Achse festlegen. Allerdings müsstest Du das für jeden Monat neu tun. Da Du aber mit Makros arbeitest, könntest Du das auch automatisieren.
Aufgezeichnet mit dem Makrorekorder sieht der Code für den Juni so aus:
Zitat:Sub Makro1()
'
' Makro1 Makro
'

'
ActiveSheet.ChartObjects("Diagramm 4").Activate
ActiveChart.Axes(xlCategory).Select
ActiveChart.Axes(xlCategory).MinimumScale = 42522
ActiveChart.Axes(xlCategory).MaximumScale = 42552
Range("H67").Select
End Sub

Du müsstest die Zahlen anhand des gewählten Monats allerdings berechnen. Bekommst Du das gebacken oder benötigst Du weitere Hilfe zur Programmierung?
Ich kenn mich mit Makros nicht so gut aus. Und die vorhandenen Makros waren schon in der Vorlage, die ich aber nicht erstellt habe.

Nach kleiner Recherche im Internet, wollte ich mir doch ein Makro erstellen aber so wie immer funktioniert es nicht so, wie es soll, wenn man davon wenig Ahnung hat.

mein Code sieht so aus:

Sub Makro6()
'
' Makro6 Makro
'
' Tastenkombination: Strg+y
Dim intStart As Date
Dim intEnde As Date
    Sheets("Monatsbericht 2016").Select
    intStart = ActiveSheet.Range("H1").Value  (hier ist ein Fehler; in H1 steht das Datum(Juni 2016) als Text) Kann man es irgendwie in Datumformat umwandelt? Gibt es dafür eine Funktion?
    intEnde = DateSerial(Year(intStart), Month(intStart) + 1, 1)

    ActiveSheet.ChartObjects("Diagramm 4").Activate
    ActiveChart.Axes(xlCategory).Select
    ActiveChart.Axes(xlCategory).MinimumScale = intStart
    ActiveChart.Axes(xlCategory).MaximumScale = intEnde
End Sub

Gruß
Lycaner
Hallo Lycaner,

ja, das geht. Dazu gibt es die Funktion CDate. Wenn das Datum in H1 komplett ist, dann CDate(Range("H1"))
Du könntest aber, wenn der "Datumstext" einen einheitlichen Aufbau hat, auch diesen für Dein DateSerial zerlegen, z.B. so:
With Range("H1")
MsgBox DateSerial(Right$(.Value, 2), Mid$(.Value, 4, 2), Left$(.Value, 2))
End With

Eventuell kannst Du auch den Datumswert verwenden, und da wird es noch kürzer:
With Range("H1")
MsgBox DateValuel(.Value)
End With

oder noch kürzer
MsgBox DateValuel(Range("H1"))
Hi,

(25.07.2016, 17:25)schauan schrieb: [ -> ]MsgBox DateValuel(Range("H1"))

heißt das echt DateValuel...?
Seiten: 1 2