Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1640to1644
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

x-Achse in Punktdiagramm anpassen

x-Achse in Punktdiagramm anpassen
04.09.2018 16:07:07
Thomas
Hallo,
ich habe folgendes Problem, dass im angehängten Bild die X-Achse nicht richtig skaliert ist. Die Tabelle wird mit einer VBA Programmierung erzeugt und für jede Kalenderwoche wird ein neues File erzeugt, daher bringt es nichts wenn ich wie in 1.) fixe Zahlenwerte eingebe.
Die Spalte C ist folgend formatiert: 23.07.2018 00:00:00 und zählt jede Minute um 1 weiter
Ich habe es schon mit Folgendem probiert:
1.) With CHWa.Axes(xlCategory, xlPrimary)
.MaximumScale = 43311
.MinimumScale = 43304
End With
2.) .MaximumScale = WorksheetFunction.Max(Range("C2:C10070"))
3.) .MaximumScale = Range("C10070")
4.) .MaximumScale = Range("C10070").Value
5.) .MaximumScale = WorksheetFunction.Max(Columns(3))
Userbild

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Ohne Beispielmappe nicht nachvollziehbar - o.T.
04.09.2018 16:45:05
Beverly


Und wo ist das Diagramm bzw. der Code? - o.T.
04.09.2018 20:04:05
Beverly


AW: Und wo ist das Diagramm bzw. der Code? - o.T.
05.09.2018 09:30:35
Thomas
Also hier ist der Code:
Ich muss dazu sagen, dass ich ein absoluter Neuling im Thema VBA bin und mir daher Youtube Videos und Forenbeiträge angeschaut habe und somit diese zusammen gestoppelt habe. Daher werden wohl einige Fehler und Verkomplizierungen vorhanden sein.
Es geht darum, dass jede Kalenderwoche ein Mitschrieb von Temperatursensoren gemacht wird. Dieser Mitschrieb wird als .csv gespeichert und soll als Diagramm dargestellt werden. In der hochgeladenen Mappe fehlen in Spalte 1&2 Datum und Uhrzeit. In Spalte 3 werden diese addiert um später im Diagramm die x-Achsen Beschriftung darzustellen. (Dies habe ich gemacht da ich nicht gewusst habe wie ich sonst anstelle der Uhrzeiten nur die Tage anzeigen kann)
Sub Diagramme()
Dim i As Double
Application.ScreenUpdating = False
With Worksheets(1)
Range("F1").Value = "Mittelwert"
Range("G1").Value = "Maximale Temperatur"
Range("H1").Value = "Minimale Temperatur"
Range("C1").Value = "Datum"
For i = 2 To 5000
If Cells(i, 1)  "" Then
.Cells(i, 3) = (.Cells(i, 1) + .Cells(i, 2))
Else
Cells(i, 3).Value = " "
End If
If Cells(i, 4)  "" Then
.Cells(i, 6) = (.Cells(i, 4) + .Cells(i, 5)) / 2
Else
Cells(i, 4).Value = " "
End If
If Cells(i, 4)  "" Then
.Cells(i, 8) = ("26")
Else
Cells(i, 4).Value = " "
End If
If Cells(i, 4)  "" Then
.Cells(i, 7) = ("18")
Else
Cells(i, 4).Value = " "
End If
Next i
End With
Application.ScreenUpdating = True
Sheets.Add After:=Sheets(Sheets.Count)
Dim COWa As ChartObject
Dim CHWa As Chart
Set COWa = ThisWorkbook.Worksheets(2).ChartObjects.Add(10, 10, 1000, 300)
Set CHWa = COWa.Chart
CHWa.ChartType = xlXYScatterLinesNoMarkers
CHWa.SetSourceData Worksheets(1).Range("C1:C5000,D1:H5000")
With CHWa.Axes(xlValue)
.HasTitle = True
.MinimumScale = 17
.AxisTitle.Text = "t in °C"
End With
With CHWa.Axes(xlCategory, xlPrimary)
.HasMajorGridlines = True
'.MinimumScale = Range("C2")
'.MaximumScale = Range("C10078")
End With
End Sub
Beste Grüße,
Thomas
Anzeige
AW: Und wo ist das Diagramm bzw. der Code? - o.T.
05.09.2018 09:37:58
Thomas
Das Diagramm sieht jetzt komisch aus, da ich die Ausgangswerte löschen musste um die 300KB grenze für Fileuploads nicht zu überschreiten. Im Normalfall sollte es so wie im Screenshot aussehen.
Lösungsvorschlag
05.09.2018 13:26:42
Beverly
...ausgehend von deiner hochgeladenen Mappe:
Sub Diagramme()
Dim lngLetzte As Long
Dim rngBereich As Range
Application.ScreenUpdating = False
With Worksheets(1)
.Range("F1").Value = "Mittelwert"
.Range("G1").Value = "Maximale Temperatur"
.Range("H1").Value = "Minimale Temperatur"
.Range("C1").Value = "Datum"
lngLetzte = .Columns(3).Find(What:="*", SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
Set rngBereich = .Range(.Cells(1, 3), .Cells(lngLetzte, 8))
End With
Application.ScreenUpdating = True
Sheets.Add After:=Sheets(Sheets.Count)
Dim COWa As ChartObject
Dim CHWa As Chart
Set COWa = ActiveSheet.ChartObjects.Add(10, 10, 1000, 300)
Set CHWa = COWa.Chart
CHWa.ChartType = xlXYScatterLinesNoMarkers
CHWa.SetSourceData rngBereich
With CHWa.Axes(xlValue)
.HasTitle = True
.MinimumScale = 17
.AxisTitle.Text = "t in °C"
End With
With CHWa.Axes(xlCategory, xlPrimary)
.HasMajorGridlines = True
.MinimumScale = rngBereich.Columns(1).Cells(2).Value
.MaximumScale = Application.Max(rngBereich.Columns(1))
End With
End Sub


Anzeige
AW: Lösungsvorschlag
05.09.2018 13:45:56
Thomas
Super, danke dir. Funktioniert sehr gut, jedoch schneidet er mir das letzte Datum ab.
Ich habe es so versucht, was so lange funktioniert so lange es immer nur eine Kalenderwoche bearbeitet.
.MinimumScale = Tabelle1.Range("A2").Value
.MaximumScale = Tabelle1.Range("A2").Value + 7
Ist eher Stümperhaft aber für die Anwendung reicht es :-)
Dein Problem kann ich nicht nachvollziehen...
05.09.2018 14:04:00
Beverly
...der Code bezieht sich auf die Zelle C2 und das Maximum der Spalte C, also nicht auf A2!! In deiner Mappe steht in C2 der 23.07.2018 und in der letzen Zeile in C7200 der 28.07.2018 - und im Diagramm ist die Achse genau mit diesen Werten skaliert:
Userbild


Anzeige
AW: Dein Problem kann ich nicht nachvollziehen...
05.09.2018 14:16:36
Thomas
Mit A2 und C2 ist ein Fehler meinerseits.
So sieht es für mich aus wenn ich das Script verwende.
Userbild
Problem nach wie vor nicht nachvollziehbar...
05.09.2018 16:45:16
Beverly
Dann sieht deine Mappe anders aus als die die du hochgeladen hast.


300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige