Trendlinie Werte aus Gleichung lesen
12.07.2018 13:43:36
Nester
ich brauche dringend eure Hilfe.
Ich habe eine Trendlinie in Excel erstellt mir die Gleichung anzeigen lassen.
Sie hat 20 Nachkommastellen und geht bis x^6.
Ich muss mit den Werten vor dem x weiterrechnen. Hierfür habe ich bereits dieses Thema gefunden
https://www.herber.de/forum/archiv/852to856/852955_Gleichung_der_trendlinie_in_zelle_schreiben.html
Ich habe das Makro dort angepasst, sodass es für x^6 funktioniert, das sieht so aus.
Sub Makro1()
ActiveSheet.ChartObjects("Diagramm 5").Activate
ActiveChart.SeriesCollection(1).Trendlines(1).Select
With Selection
typ = .Name
End With
' hier müssen die ganzen if-Bedingungen rein für die Trendlinientyp
ActiveChart.SeriesCollection(1).Trendlines(1).DataLabel.Select
Range("D2").Value = ActiveChart.SeriesCollection(1).Trendlines(1).DataLabel.Text
End Sub
Sub Makro2()
'
ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.SeriesCollection(1).Trendlines(1).Select
With Selection
typ = .Name
End With
' hier müssen die ganzen if-Bedingungen rein für die Trendlinientyp
ActiveChart.SeriesCollection(1).Trendlines(1).DataLabel.Select
wert = ActiveChart.SeriesCollection(1).Trendlines(1).DataLabel.Text
wert = Mid(wert, 2, Len(wert))
Range("d3").Select
ActiveCell.FormulaR1C1 = wert
End Sub
Sub vereinfacht()
Dim wert(1 To 100)
' hier wird jetzt alles im Makro selbst gemacht und dann in Zelle h2 bis h8 eingetragen
' Prinzip bleibt aber das gleiche wie schon in der Tabelle beschrieben
ActiveSheet.ChartObjects("Diagramm 5").Activate
ActiveChart.SeriesCollection(1).Trendlines(1).Select
ActiveChart.SeriesCollection(1).Trendlines(1).DataLabel.Select
Formel = ActiveChart.SeriesCollection(1).Trendlines(1).DataLabel.Text ' das ist die Formel _
gesamt
Formel = Right(Formel, Len(Formel) - 4)
findx1 = WorksheetFunction.Find("x", Formel)
findx2 = WorksheetFunction.Find("x", Formel, findx1 + 1)
findx3 = WorksheetFunction.Find("x", Formel, findx2 + 1)
findleer1 = WorksheetFunction.Find(" ", Formel)
findleer2 = WorksheetFunction.Find(" ", Formel, findleer1 + 1)
findleer3 = WorksheetFunction.Find(" ", Formel, findleer2 + 1)
findleer4 = WorksheetFunction.Find(" ", Formel, findleer3 + 1)
findleer5 = WorksheetFunction.Find(" ", Formel, findleer4 + 1)
länge = Len(Formel)
For n = 1 To länge
wert(n) = Mid(Formel, n, 1)
Next
For n = 1 To findx1 - 1
wert1 = wert1 & wert(n)
Next
For n = findleer1 To findx2 - 1
wert2 = wert2 & wert(n)
Next
For n = findleer3 To findx3 - 1
wert3 = wert3 & wert(n)
Next
For n = findleer5 To länge
wert4 = wert4 & wert(n)
Next
Range("h2").Value = CDbl(wert1)
Range("h4").Value = CDbl(wert2)
Range("h6").Value = CDbl(wert3)
Range("h8").Value = CDbl(wert4)
End Sub
Jedoch wird mir der erste Wert nicht korrekt angezeigt.
Des Weiteren scheint es Probleme mit Kommata/Punkten zu haben. Meine VBA kenntnisse sind nicht sonderlich gut. Könntet ihr mir helfen?
MfG
Nester
Hier mal eine beispielhafte Gleichung:
y = -0,00000000000027119142x6 + 0,00000000964124430828x5 - 0,00012856502071152600x4 + 0,76756309328279900000x3 - 2.142,89951014624000000000x2 + 10.420.627,42107010000000000000x - 517.648.327,23430700000000000000