Forum: PC-Programmierung Excel Balkendiagram / Zeitabhängig


von Rob (Gast)


Lesenswert?

Hey ihr Lieben,

Ich möchte bei Excel ein Diagramm erstellen bei den ich mir ansehen kann 
wie lange mein Ventilator in einen Bestimmten Betriebsmodi war. er hat 4 
Modis:
0% (aus) 25%, 50% 100%. Wann er in welchen Modi geschaltet ist habe ich 
in einer Excel Tabelle. die Wertepaare Sehen in Etwa so aus:

13.05.2020 08:47:22 -  0
13.05.2020 18:04:49 -  25
13.05.2020 18:07:49 -  50
13.05.2020 18:10:50 -  75
13.05.2020 18:15:20 -  100
13.05.2020 18:20:20 -  75
13.05.2020 18:21:20 -  50
13.05.2020 18:23:20 -   25
13.05.2020 18:28:50 -  50
13.05.2020 18:35:20 -  75
13.05.2020 18:44:50 -  50
13.05.2020 18:56:50 -  25
13.05.2020 18:57:00 -  0

Nun Möchte ich eine Art Balkendiagramm haben bei den ich auf der X-Achse 
die Dauer des Betriebes habe und auf der Y-Achse den Zustand als Balken 
zu erkennen.
Nochmal anders Formuliert: die X Achse ist Zeitabhängig und auf der 
Y-Achse sollen die Werte So lange Gehalten werden bis auf der Zeitachse 
ein neuer Wert kommt und dann ein Sprunghaften an - oder Abstieg zeigen.

Liniendiagramme konnte ich nicht dazu Motivieren ein Sprunghaften 
Anstieg darzustellen und Balkendiagramme konnte ich dahingehend nicht 
verändern, dass sie die Breite Zeitabhängig darstellen.

Ich sollte noch erwähnen, dass es sich um über 800 Daten paare handelt. 
Eine Händische Modifikation der Daten will ich Vermeiden.

von René H. (mumpel)


Lesenswert?

Versuch es mal mit PowerBI. https://powerbi.microsoft.com/de-de/

von Peter E. (Firma: S&P) (eosangel)


Angehängte Dateien:

Lesenswert?

Also ich sehe da 5 Stufen.

Quick and Dirty:

Errechne die Zeiten der Stufe durch die Differenzen (in Minuten) und 
dann mit Schallanalyse einmal als Balken und einmal in Farbe.

Ich habe die Prozente mal als 1-5 beschrieben und die Zeiten auf Minuten 
gerundet.

von Peter E. (Firma: S&P) (eosangel)


Lesenswert?

das heisst natürlich Schnellanalyse ;-) (Excel)

von Rob (Gast)


Angehängte Dateien:

Lesenswert?

Danke für die schnelle Antwort. Leider ist das noch nicht das, was ich 
gerne hätte. Um mich klarer auszudrücken habe ich die gewünschte Grafik 
mal Skizziert

von Christoph db1uq K. (christoph_kessler)


Angehängte Dateien:

Lesenswert?

in LibreOfficeCalc kann ich ein XY-Diagramm mit "Stufen" darstellen 
lassen. Datum und Uhrzeit habe ich noch nicht ausgewertet, eventuell 
müsste ich das erst in einer weiteren Spalte in dezimale Zahlen umformen 
lassen

So das geht mit Spalte dezimal = Spalte Uhrzeit * 24
wird aber etwas gedrängt, wenn die Messintervalle so unterschiedlich 
sind.

: Bearbeitet durch User
von Hans-Georg L. (h-g-l)


Lesenswert?

Rob schrieb:

> Balkendiagramme konnte ich dahingehend nicht
> verändern, dass sie die Breite Zeitabhängig darstellen.

Stell den Abstand der Balken auf 0 dann hast du das gewünschte.

von Rob (Gast)


Lesenswert?

Hans-Georg L. schrieb:
> Stell den Abstand der Balken auf 0 dann hast du das gewünschte.

Leider nicht denn die Dauer des anhaltenden Zustandes will ich grafisch 
darstellen und ich habe kein weg gefunden die Balken dicke mit werten zu 
verändern.

Leider bin ich auch darauf angewiesen Excel zu verwenden. Die zweite 
Tabelle von Christoph zeigt die werte so, wie ich sie mir vorstelle.

Wenn ich das gleiche noch in Excel hinbekommen könnte, wäre ich 
Glücklich.

von Alexander K. (Gast)


Lesenswert?

Rechne die Minuten aus, gibt sie an die Zeitachse, und die Leistung an 
die Powerachse. FERTIG.

Mit den Eigenschaften der Achse kannst du das ganze verfeinern.

Gruß

  Pucki

von Hans-Georg L. (h-g-l)


Angehängte Dateien:

Lesenswert?

Siehe Bild ..

von Alexander K. (Gast)


Lesenswert?

Hans-Georg L. schrieb:
> Siehe Bild ..

Genau so ;)

Gruß

  Pucki

von Hans-Georg L. (h-g-l)


Lesenswert?

Datenreihe formatieren -> Reihenoptionen
 Abstandsbreite auf 0 (kein Abstand) setzen

Muss man nichts rechnen.

: Bearbeitet durch User
von Rob (Gast)


Lesenswert?

Guten Tag,
ich habe das Gefühl nicht verstanden zu werden.

Das Hier: https://www.mikrocontroller.net/attachment/461005/Tabelle.png
ist eine Darstellung der Werte wie ich sie mir vorstelle. daraus ist zu 
erkennen, dass die meiste zeit der Ventilator ausgeschaltet war.

Diese Grafik: 
https://www.mikrocontroller.net/attachment/461009/Unbenannt.PNG lässt 
vermuten, das die Zustände alle gleich lang dauerten. Das ist für mich 
unbrauchbar.

Die Minuten Auszurechnen ist nicht mein Problem. die Minuten und die 
Sprunghaften an und Abstiege in Excel darzustellen ist mein Problem.

von Karl (Gast)


Lesenswert?

Exel kann halt nicht besonders viel in Sachen Diagramme. Du suchst ein 
Treppen-/Stufendiagramm

Du musst es als Liniendiagramm nachbauen

13.05.2020 08:47:22 -  0
13.05.2020 18:04:48 -  25
13.05.2020 18:04:49 -  25
13.05.2020 18:07:48 -  50
13.05.2020 18:07:49 -  50
13.05.2020 18:10:49 -  75
13.05.2020 18:10:50 -  75

von Karl (Gast)


Lesenswert?

So meinte ich

13.05.2020 08:47:22 -  0
13.05.2020 18:04:48 -  0
13.05.2020 18:04:49 -  25
13.05.2020 18:07:48 -  25
13.05.2020 18:07:49 -  50
13.05.2020 18:10:49 -  50
13.05.2020 18:10:50 -  75

von Rob (Gast)


Lesenswert?

Ich danke für eure Hilfe. Das Stichwort "Stufendiagramm" hat mir sehr 
geholfen und fehlte in meiner Problembeschreibung.

Ich erkenne das es keinen einfachen Weg gibt, dieses Diagramm in Excel 
zu erstellen.

von Alexander K. (Gast)


Lesenswert?

Rob schrieb:
> Ich erkenne das es keinen einfachen Weg gibt, dieses Diagramm in Excel
> zu erstellen.

Doch gibt es.  Nennt sich Diagrammassistent.  Dort einfach richtig 
markieren und zuweisen.  FERTIG.

Gruß

   Pucki

von Rob (Gast)


Lesenswert?

Anscheinend bin ich dafür zu schwerfällig um den einfachen Weg zu sehen, 
denn du meinst Pucki.
Bitte beschreibe mir wie ich in Excel mit den Aktuellen Daten ein Stufen 
oder Treppendiagramm erstellen kann damit es aussieht wie das zweite von 
Christoph db1uq K:

https://www.mikrocontroller.net/attachment/461005/Tabelle.png

von René H. (mumpel)


Lesenswert?

Ist das für Dich privat? Hast Du PowerBI schon probiert?

von Sheeva P. (sheevaplug)


Lesenswert?

René H. schrieb:
> Ist das für Dich privat? Hast Du PowerBI schon probiert?

Verrätst Du mir bitte, welcher Teil von

    "Leider bin ich auch darauf angewiesen Excel zu verwenden."

Dir entgangen ist?

Danke,
Sheevaplug

von René H. (mumpel)


Lesenswert?

Die Daten bleiben ja in Excel, nur das Diagramm würde dann in PowerBI 
erstellt.

Aber weshalb bist Du zwingend auf Excel angewiesen? Vielleicht weiss 
Dein "Auftraggeber" nicht wie man es besser machen kann? ?

von Rob (Gast)


Lesenswert?

Ich danke für das bemühen mir weiterhin zu helfen.

Ich wollte ein bestehendes Diagramm in meiner Beschäftigung lesbarer 
gestallten und damit beim Vorgesetzten Punkten.

In Betrieb wird ausschließlich Excel verwendet und wenn ich eine Lösung 
Präsentiere die nicht mit diesen Programm erstellt werden kann, dann 
erhoffe ich mir dafür keine 'Pluspunkte'.

Ich werde mich bald da ran setzen und für den Fall ein Makro schreiben, 
dass die Daten so Darstellt, dass Excel es mit einen Liniendiagramm 
Darstellen kann.

von Christoph db1uq K. (christoph_kessler)


Angehängte Dateien:

Lesenswert?

Ich habe mal in LibreOfficeCalc meine ods-Datei als xlsx gespeichert, 
die Stufen-Darstellung scheint tatsächlich im Excel 2007 zu fehlen, 
Excel zeigt nur schräge Verbindungslinien. Hier der "Assistent" von 
Libre Office, da wird neben Linie auch Stufen angeboten. Hier die 
Originaldatei.

da schaffen es mehrere mit Tricks auch in Excel:
https://www.fasteasy.at/tippshop/index.php?mp=1&id=1&id2=18&id3=1847
http://www.office-loesung.de/ftopic590702_0_0_asc.php
https://www.gutefrage.net/frage/wie-kann-man-in-excel-eckige-liniendiagramme-erstellen

Der Trick ist anscheinend einfach aus jedem Kurvenpunkt zwei zu machen, 
die in der Y-Richtung versetzt sind.

: Bearbeitet durch User
von Excel-Fan (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
in Excel geht das tatsächlich nur mit etwas Bastelei.
Die lässt sich aber in ein Makro verpacken.
Die Dataen erst in eine Tabelle kopieren, dann zusätzliche Spalte 
ergänzen und mit 1 füllen. Den ganzen Block noch mal unten dran 
kopieren, in diesem Teil der Tabelle die 1 in der ergänzten Spalte durch 
2 ersetzen.
Im oberen Teil der Tabelle die Datenspalte um eine Zeile nach unten 
kopieren.
Den gesamten Block markieren und zweistufig sortieren.
1.Ebene Zeitstempel
2.Ebene Datenspalte
Diese beiden Spalten markieren und Grafik einfügen
   Punkt(XY)- Punkte mit geraden Linien

Diese Darstellung war wohl gewünscht?

Im Excel-File ist das Makro für die in der Tabelle eingefügten Daten 
enthalten (Strg-D), allerdings auf die Schnelle nur mit festen 
Zellreferenzen.
Das kann man sicher noch komfortabler an variable Datenmengen anpassen.

von Rob (Gast)


Lesenswert?

Hi,
Ich bin von den Aufwand den du, Excel-Fan, betreibst um mir zu Helfen 
beeindruckt.
Ja die Darstellung ist gewünscht.
Das Makro schaue ich mir bald an.

Danke, nicht nur an dich sondern an jeden, der sich bei der 
Lösungsfindung beeidigt hat.

von Rob (Gast)


Lesenswert?

Nochmal ich,

ich weiß ich sollte dafür eigentlich ein neuen Thread auf machen doch 
glaube ich, dass es die Frage nicht Wert ist und ich wollte die 
Situation ausnutzten, hier schon interessierte Experten für Excel 
erreichen zu können:

in einem Mako an dem ich gerade schreibe habe ich Folgende Zwei Zeilen:

    Range("E2").Select
    Selection.FormulaArray = 
"=MIN(IF(R[2]C:R[11961]C>0,R[2]C:R[11961]C))"
    Range("E3").Select
    ActiveCell.FormulaR1C1 = "=MAX(R[1]C:R[11960]C)"

Die Zeile 11961 ist das Ende meiner genutzten Tabelle. Das Ende dieser 
Tabelle ist mit jeder Anwendung eine andere und um das Dynamisch zu 
gestallten habe ich mir beim Ende der Tabelle ein:

endeDerTabelle = Selection.Row

Will ich die erstelle Variable in den oben Definierten Code benutzen 
indem ich die Zahl 11961 durch "endeDerTabelle" ersetze bekomme ich den 
"Laufzeitfehler 1004 --> Anwendung - oder objektorientierter Fehler".

Für die die sich Fragen was ich mit: 
"=MIN(IF(R[2]C:R[11961]C>0,R[2]C:R[11961]C))" bezwecken will: ich suche 
den kleinsten Wert in der Spalte E der nicht gleich Null ist.

Es mag sein, dass ich hier Anfängerfehler mache. Dies sind meine ersten 
Schritte auf den Gebiet der Makroprogramierung in Excel. Ich bitte 
darauf Rücksicht zu nehmen.

Und nein, die beiden Fragen haben nur sehr Entfernt miteinander zu tun. 
Die Beziehung zwischen ihnen besteht lediglich darin, dass sie sich auf 
den gleichen, nur zum Teil gezeigten, Datensatz beziehen.

von Rob (Gast)


Lesenswert?

Selection.FormulaArray = "=MIN(IF(R[2]C:R" & endeDerTabelle & 
"C>0,R[2]C:R" & endeDerTabelle & "C))"

habs

von Sascha W. (sascha-w)


Lesenswert?

Rob schrieb:
> Nochmal ich,
> endeDerTabelle = Selection.Row
das scheint erst mal kein eindeutiger Wert zu sein, musst du ja in dem 
Moment die Selektion an der richtigen Stelle haben.
Besser sowas wie worksheet.usedrange.rows.count um das Ende auf dem 
Blatt zu ermitteln.

Sascha

von Rob (Gast)


Lesenswert?

Hey

nun endlich bin ich dabei das Makro dafür zu schreiben. Ich weiß, hier 
wurde ein anderer weg vorgeschlagen doch ich würde gerne meinen gehen.

ich kopiere jede zeile und gebe der Kopie den Zeitstempel von dem 
Vorgehenden Datum - 1 Sekunde. und dieses '-1 Secunde bereitet mir große 
Schwierigkeiten.

Der hierfür relevante Code:

Dim eineSekunde As Date
eineSekunde = 1

 ActiveCell.FormulaR1C1 = "=R[1]C - " & eineSekunde & ""

Die Fehlermeldung ist:

Laufzeitfehler ' 1004':
Anweisungs- oder Objektdefinierter Fehler

Was möglich ist, ist, den wert von "einer Sekunde" in einer Zelle zu 
definieren und die Formel so umzugestalten, dass die Formel sich auf die 
Zelle bezieht. Das empfinde ich aber als äußerst unsauber und will das 
gerne in einer Variablen gelöst haben.
die Variable wird mir im Fenster ''Lokal'' auch richtig als Datum 
angezeigt: '31.12.1899'.

von René H. (mumpel)


Lesenswert?

Mach das nicht über "FormulaR1C1", sondern über "Formula", dann kannst 
Du auch besser mit Variablen und direkter Zellenangabe arbeiten. Ich mag 
dieses "R1C1" überhaupt nicht. Wichtig ist das richtige Setzen der 
Anführungszeichen.

Hier mal ein Beispiel von mir.
1
lngZelle = 9
2
3
For lngCount = 3 To 55
4
    Range("F" & lngCount).Formula = "=IF(Vorverteilung!K" & _
5
                                     lngZelle & "<>"""",IF(E" & lngCount & _
6
                                     "<>"""","" + "" &Vorverteilung!K" & _
7
                                     lngZelle & ",Vorverteilung!K" & lngZelle & "),"""")"
8
    lngZelle = lngZelle + 12
9
Next lngCount

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.