Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1416to1420
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

Trendliniengleichung auslesen

Trendliniengleichung auslesen
01.04.2015 22:35:04
Jens
Hallo,
ich bin neu hier und absolut kein VBA-Experte. Ich habe mir einen kurzen Code zusammengeschustert, um eine Trendliniengleichung auszulesen und damit Berechnungen anzustellen. Das funktioniert ganz gut unter Excel 2010, unter Excel 2013 hingegen nicht mehr. Bitte auf seichtem Niveau erklären.
Herzlichen Dank
Private Sub CommandButton1_Click()
Dim trendtext As String
Dim T As Variant
Dim s As Variant
Dim p As Variant
Dim q As Variant
Dim c As Variant
Dim k As Variant
Dim j As Variant
Dim i As Variant
T = Range("I3").Value
p = Range("G3").Value
q = Range("G4").Value
c = Clear
c = Range("M1").Value
ActiveSheet.ChartObjects(1).Activate
ActiveChart.SeriesCollection(1).Select
If T = 1 Then
s = True
Else
If T 1 Then
s = False
End If
End If
If Range("G3").Value 1 Then
p = Range("G3").Value
ActiveChart.SeriesCollection(c).Trendlines.Add(Type:=xlPolynomial, Order:=p, Forward:=q, _
Backward:=0, DisplayEquation:=True, DisplayRSquared:=s).Select
With Selection.Format.Line
.Visible = msoTrue
.DashStyle = msoLineSolid
End With
With Selection.Format.Line
.Visible = msoTrue
.Weight = 0.75
End With
With Selection.Format.Line
.Visible = msoTrue
.ForeColor.RGB = RGB(192, 0, 0)
.Transparency = 0
End With
With Selection.DataLabel
.NumberFormat = "#.##0,00"
End With
ActiveSheet.ChartObjects(1).Activate
ActiveChart.SeriesCollection(1).Trendlines(1).Select
With Selection
.DisplayEquation = True
.DisplayRSquared = False
trendtext = .DataLabel.Text
End With
Range("M3").Value = trendtext
trendtext = Replace(trendtext, "x", "x^")
trendtext = Replace(trendtext, "x^ ", "x ")
trendtext = Replace(trendtext, " + ", "+")
trendtext = Replace(trendtext, " - ", "-")
trendtext = Replace(trendtext, "x", "*K3")
trendtext = Replace(trendtext, " = ", "=")
trendtext = Replace(trendtext, "y", "")
Range("M3").FormulaLocal = trendtext
ActiveChart.SeriesCollection(1).Trendlines(1).DataLabel.Select
Selection.NumberFormat = "#.##0,00"
Selection.Left = 144
Selection.Top = 12

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Trendliniengleichung auslesen
02.04.2015 08:37:37
fcs
Hallo Jens,
bei den Namen der Variablen darf man schon etwas kreativer sein als nur jeweils 1 Buchstabe.
Was Excel 2013 jetzt stört weiss ich mangels Version nicht.
Auffällig:
1. beim Zahlenformat unter VBA muss man Punkt als Dezimalzeichen und Komma als 1000er Trennzeichen verwenden
2. An einigen Stellen hast du nicht die Variable c verwendet sondern 1, um die Datenreihe anzusprechen.
Ich hab dein Makro mal von den Select-Selection-Kombinationen befreit und Objektvariablen für die involvierten Diagramm-Objekte eingefügt. Das macht das Ganze etwas übersichtlicher.
Ob 2013er-version damit zufrieden ist?
Wenn man die Trendlinien-Formel auswertet, dann sollte man die Zahlen in der Formel in wissentschaftlicher Darstellung formatieren, damit ausreichend signifikante Ziffern bei der Umwandlung in eine Formel einfliessen.
Gruß
Franz
Private Sub CommandButton1_Click()
Dim trendtext As String
Dim T As Variant
Dim s As Variant
Dim p As Variant
Dim q As Variant
Dim c As Variant
Dim k As Variant
Dim j As Variant
Dim i As Variant
Dim objChart As Chart, objSerie As Series, objTrendLine As Trendline
T = Range("I3").Value
p = Range("G3").Value
q = Range("G4").Value
'c = Clear    'nicht nötig c hat den Wert 0 bzw. Leer wenn das Makro gestartet wird
c = Range("M1").Value
Set objChart = ActiveSheet.ChartObjects(1).Chart
If T = 1 Then
s = True
Else
If T  1 Then
s = False
End If
End If
If Range("G3").Value  1 Then
p = Range("G3").Value
Set objSerie = objChart.SeriesCollection(c)
Set objTrendLine = objSerie.Trendlines.Add(Type:=xlPolynomial, Order:=p, Forward:=q, _
Backward:=0, DisplayEquation:=True, DisplayRSquared:=s)
With objTrendLine
With .Format.Line
.Visible = msoTrue
.DashStyle = msoLineSolid
.Weight = 0.75
.ForeColor.RGB = RGB(192, 0, 0)
.Transparency = 0
End With
.DisplayEquation = True
.DisplayRSquared = False
With .DataLabel
.NumberFormat = "0.000,000,00E+00" 'wissenschaftliches Format ist hier gü _
nstiger
.Select 'Leider erforderlich, damit Formel ausgelesen werden kann
trendtext = .Text
.NumberFormat = "#,##0.0000" 'Anzeige mit 4 Nachkommastellen
.Left = 144
.Top = 12
End With
End With
Range("M3").Value = trendtext
trendtext = Replace(trendtext, "x", "x^")
trendtext = Replace(trendtext, "x^ ", "x ")
trendtext = Replace(trendtext, " + ", "+")
trendtext = Replace(trendtext, " - ", "-")
trendtext = Replace(trendtext, "x", "*K3")
trendtext = Replace(trendtext, " = ", "=")
trendtext = Replace(trendtext, "y", "")
Range("M3").FormulaLocal = trendtext
End If
End Sub

Anzeige
AW: Trendliniengleichung auslesen
02.04.2015 09:20:05
Beverly
Hi Jens,
versuche es mal so (getestet in Excel2013):
Sub Trendlinie()
Dim T As Variant
Dim s As Boolean
Dim p As Variant
Dim q As Variant
Dim c As Variant
Dim trendtext As String
Application.ScreenUpdating = False
T = Range("I3").Value
p = Range("G3").Value
q = Range("G4").Value
c = Range("M1").Value
If T = 1 Then
s = True
Else
s = False
End If
If Range("G3").Value  1 Then
With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(c).Trendlines.Add(Type:= _
xlPolynomial, _
Order:=p, Forward:=q, Backward:=0, DisplayEquation:=True, DisplayRSquared:=s)
With .DataLabel
.NumberFormat = "#,##0.0000"
.Left = 144
.Top = 12
trendtext = .Caption
End With
With .Format.Line
.Visible = msoTrue
.Weight = 0.75
.ForeColor.RGB = RGB(192, 0, 0)
.Transparency = 0
End With
End With
trendtext = Replace(trendtext, "x", "x^")
trendtext = Replace(trendtext, "x^ ", "x ")
trendtext = Replace(trendtext, " + ", "+")
trendtext = Replace(trendtext, " - ", "-")
trendtext = Replace(trendtext, "x", "*K3")
trendtext = Replace(trendtext, " = ", "=")
trendtext = Replace(trendtext, "y", "")
Range("M3").FormulaLocal = trendtext
End If
Application.ScreenUpdating = True
End Sub


Anzeige
AW: Trendliniengleichung auslesen
02.04.2015 10:02:14
Jens
Hallo Beverly (Karin?), Hallo Franz,
vielen herzlichen Dank für Eure prompte Hilfe. Es funktioniert nun tatsächlich auch in Excel 2013. Ihr seid wirklich richtig gut!
Grüße Jens

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige