1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Excel Bereichsdiagramm bildet keine Uhrzeit ab

Discussion in 'Office-Programme' started by CERN, Mar 18, 2012.

Thread Status:
Not open for further replies.
  1. CERN

    CERN Kbyte

    Hi,

    ich habe mit Excel 2007 ein Bereichsdiagramm erstellt, das auf der x-Achse Datumseinträge der Form 17.03.2012 13:12:00 hat und auf der y-Achse die Messwerte. Die Datumseinträge kommen von einem Makro und sind "benutzerdefiniert" formatiert.
    Das Bereichsdiagramm stellt nur Tage dar und schreibt immer 17.03.2012 00:00. Mehrere Messwerte an einem Tag werden gar nicht angezeigt. Weiß jemand, wie ich das einstellen kann?

    Danke!
     
  2. Urs2

    Urs2 Megabyte

    Excel kann nur mit einer Art Datum rechnen, jetzt ist zB 40986.9791667 >>
    40986 ist die Tagnummer seit 1.1.1900, der Dezimalbruch ist die Zeit als Tagteil, hier 23:30:00.
    Alle Tag- oder Zeit-Formate, benutzerdefiniert oder nicht, sind nur für die Anzeige, damit wir Menschen das auch lesen können...

    Dein Makro liefert wohl eine benutzerdefinierte Datum+Zeit-Darstellung, die Excel zwar in eine Datum-, aber nicht in eine Zeit-Nummer zurückübersetzen kann, 00:00:00 bedeutet ja dass hinter dem Dezimalpunkt nichts steht...

    Lass Dir vom Makro Excel-Zeit liefern...

    Gruss Urs
     
    Last edited: Mar 18, 2012
  3. CERN

    CERN Kbyte

    Danke! Im Moment habe ich

    Code:
    CDate(Format(Now, "dd.mm.yy hh:mm"))
    Wie mache ich das besser?
     
  4. Urs2

    Urs2 Megabyte

    Hallo CERN

    Deine Formel ergibt einen gültigen Excel-Datumswert, man kann damit rechnen oder ihn in eine Zelle schreiben.
    Intern gespeichert wird dabei allerdings wie immer "dd.mm.yyyy hh:mm:ss", also mit Sekunden (als 00)
    Diagramme sind aber oft seltsam und dann immer stur !

    Woher und in welcher Form erhält denn Dein Makro Datum+Zeit (ich nehme mal nicht an, dass Now ans Diagramm gesendet werden soll...?
    Erarbeitet es sich diese Zeit, erhält es sie von irgendwo... oder...?

    Vielleicht mag das Diagramm einfach keine Zeit... dann versuche mal ihm das Datum als gewöhnliche DoubleZahl zu liefern (wie in meinem meinem obigen Beitrag). Deine Formel wird dann >>

    CDbl(CDate(Format(Now, "dd.mm.yy hh:mm")))

    Ich weiss, das gibt Aerger mit der Skalen-Beschriftung, aber vielleicht entdeckst Du dabei warum das Diagramm die Zeit nicht frisst......

    Braucht das Diagramm eigentlich Date+Time, oder nur Time allein, zB als DezimalStunden?

    Gruss Urs


    PS >> Wie sendet eigentlich das Makro die Werte an das Diagramm ?
    Ueber Zellen in einem Excel-Sheet, wo sie vom Diagramm abgeholt werden ?
    Und sind dann diese Zellen auch richtig formatiert ?
     
    Last edited: Mar 19, 2012
  5. CERN

    CERN Kbyte

    Hi Urs2,

    danke für die ausführlich Antwort. Ehrlich gesagt hatte ich den Ausdruck

    Code:
    CDate(Format(Now, "dd.mm.yy hh:mm"))
    gegoogelt und mich gefreut als ich gesehen habe, dass es tatsächlich das aktuelle Datum schreibt.
    Die Übergabe erfolgt, wie du richtig geahnt hast über eine Zelle:
    Code:
     Worksheets("Zeitverlauf").Cells(datum + 2, 1) = CDate(Format(Now, "dd.mm.yy hh:mm"))
    wobei das Formatieren nichts daran ändert, wie es das Diagramm versteht... auch dein Vorschlag mit dem Casten als Double bringt leider nichts (Datum immer nur mit 00:00 UHr und als 'Standard' total verzerrt...)
    Ich hätte es schon gerne mit Uhrzeit, denn im Moment werden Änderungen innerhalb eines Tages als Sprung angezeigt und auch nur, wenn der nächste Tag eingetragen wurde :-\
     
  6. Urs2

    Urs2 Megabyte

    Hallo CERN

    Seltsam.... dass mit Double die Skala verzerrt ist, war voraus zu sehen, sie war ja nicht dafür vorgesehen,,, aber dass dabei auch keine Dezimalwerte verwendet werden...

    Wenn Du mit dem Mauszeiger im Diagramm über einen Datenpunkt fährst, werden die dafür massgebenden Koordinaten angezeigt >>
    >> Reihe "DeinReihenName" Datenpunkt "DeinDatumZeit" (DeinDatumZeit; DeinWert)

    Was wird denn angezeigt, wenn in der entsprechenden TransferZelle im ExcelSheet gleichzeitig ein Datum mit Minuten steht ?

    Gruss Urs
     
  7. Urs2

    Urs2 Megabyte

    ...in den Excel-Zellen steht das richtige Datum mit Stunden und Minuten... das Diagramm nimmt aber nur Tage ohne Zeit an...

    Das wollte ich jetzt doch etwas genauer wissen >>> Mein Test-Diagramm funktioniert bestens mit Datum+Stunden+Minuten.
    Vielleicht hast Du irgendeine der vielen Diagramm-Einstellungen falsch ausgewählt >>> das kannst Du an meinem Diagramm überprüfen.

    Es ist eine normale XLS >>> nur die TXT-Endung entfernen.

    Gruss Urs
    .
     

    Attached Files:

  8. CERN

    CERN Kbyte

    Hi Urs,

    vielen Dank, dass du dich da so reinhängst! Das ist echt selbstlos von dir!

    Indem ich deine Diagrammeinstellungen genauer betrachtet habe, konnte ich dein Ergebnis reproduzieren.

    Ich habe selbst auch noch einmal eine Beispieldatei erstellt, die zeigt, wo ich hin möchte:
    Links sieht man, dass der Wert 20.3.12 quasi interpoliert wurde, weil Excel eine gleichmäßig skalierte x-Achse erstellt. Ich will aber einfach nur die Messpunkte auf der x-Achse, keine gleichmäßige Skalierung. Mit anderen Worten: Es kann Mo, Di, Mi kommen und dann aber erst So.
    Rechts habe ich das erreicht indem ich die x-Achse als Textachse definiert habe. Dann knickt es aber unschön ab und in meinem echten Datensatz würde man gar nichts mehr sehen.
    Hast du eine Idee, wie ich das in den Griff bekomme?
     

    Attached Files:

  9. Urs2

    Urs2 Megabyte

    ...warum nicht?
    Hast Du zu viele Datensätze? Einfach mehrere Bildschirme nebeneinander stellen...sonst...äähh...Zaubern geht in diesem Leben nicht !

    Wenn ich Dich nicht ganz falsch verstanden habe, sollte mein Beispiel genügen. Hoffentlich hat mein Excel2003 die XLSM auch richtig konvertiert...

    Da Du zum Beliefern des Diagramms sowieso ein Makro benutzt, habe ich eines mit Dummy-Daten gefüttert und die "Lieferart" verändert. Es sollte sich jetzt alles automatisch anpassen.
    Bemerkungen in Datei und Code.

    Gruss Urs
    .
     

    Attached Files:

  10. CERN

    CERN Kbyte

    Hi Urs2,

    erstmal sorry für die Verzögerung, ich war im Urlaub :)

    :D Das Problem war, dass ich das nicht so elegant gelöst hatte wie du und den Datenbereich für das Diagramm ganz nach unten gezogen hatte. Da waren die Daten nur noch ein Strich an der y-Achse :)

    Ich habe deinen Code übernommen und schon einmal super viel gelernt, vielen Dank. Es funktioniert auch so weit, nur die Sache mit dem benannten Bereich will bei mir nicht klappen (kannte das gar nicht...). Er vergrößert sich nicht automatisch und auch die Daten für das Diagramm werden aus dem fixen benannten Bereich gezogen. Hast du eine Idee, was ich da tun kann?

    PS: Bin inzwischen auf Office 2010 umgestiegen.
     
  11. Urs2

    Urs2 Megabyte

    ..und ich habe immer noch 2003.

    Ich weiss auch nicht, was da passiert ist.
    Natürlich hatte ich das Ding als XLS getestet, die XLS habe ich nicht mehr und musste die XLSM zurück konvertieren >>> nichts geht mehr.

    Ich habe nun etwas Code angehängt und jetzt funktioniert es wieder... bei mir. Hänge das in meiner Datei ans Ende vor End Sub >>

    Code:
                'sortiert den Bereich nach Datum
    rngRaw.Sort key1:=Columns("A")
    
    'neu >>>>
                'passt den Diagramm-Bereich an neue Grösse an
    Sheets("Test1").ChartObjects(1).Activate
    ActiveChart.SetSourceData Source:=Sheets("Test1").Range("RawData")
                'nimmt den Fokus wieder aus dem Chart
    ActiveChart.Deselect
    
    End Sub
    
    ChartObjects(1) >>> = wenn nur 1 Chart auf dem Blatt, wenn mehrere auf demselben Blatt, dann die entsprechende Nummer setzen
    "RawData" >>> ist der Name des im Blatt benannten Bereichs, nicht der rngRaw im Code

    Wenn Du übrigens Datensätze aus der Liste entfernen willst >> entferne die ganze Zeile und nicht den Inhalt >
    > so passt sich der benannte Bereich an
    > das Diagramm passt sich dann beim nächsten Hinzufügen an...

    Gruss Urs
     
  12. Urs2

    Urs2 Megabyte

    ...und weiter mit dem Problem...

    Lange nachdem ich Dein Diagramm wieder weggelegt hatte, funktionierten meine eigenen Diagramme auch nicht mehr...
    ...nun war vorbei mit Heftpflastern aus einigen Code-Zeilen !!

    Dass Deine Datei bei mir zuerst funktioniert hatte, und dann nicht mehr, brachte mich auf die Spur zum Fehler >>> irgendetwas hatte in meinem Excel das Neuberechnen von Automatisch auf Manuell umgestellt (ich ändere dort nie etwas).

    Wenn automatisch neuberechnet wird, funktioniert Dein Makro auch ohne die Zusatzzeilen im Code.

    In Excel2003 geht es über MenüExtras>>Berechnung>>Berechnung>>Automatisch
    Wenn Du diese Einstellung in Deinem Excel auch findest, müsste das Problem auch bei Dir gelöst sein.

    Gruss Urs
     
Thread Status:
Not open for further replies.

Share This Page