Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Auslesen von Trendformeln per VBA
#1
Hallo Community,

da ich keine VBA-Leuchte bin, hat mir ein Experte folgenden Makrotext geschrieben, mit dessen Hilfe die Trendformeln von in einem Datenblatt enthaltenen Diagrammen ausgelesen, werden, um sie an anderer Stelle weiter zu verarbeiten:

Code:
Option Explicit

Sub Trendformel()
   Dim ch As Chart
   Dim cho As ChartObject
   Dim formel As String
   Dim ser As Series
   Dim tl As Trendline
   Dim ws As Worksheet
   Dim zeile As Long
  
   Set ws = ThisWorkbook.Worksheets("Regressionsmodelle")
   zeile = 10
   For Each cho In ws.ChartObjects
      Set ch = cho.Chart
      Set ser = ch.SeriesCollection(1)
      Set tl = ser.Trendlines(1)
      formel = tl.DataLabel.Text
      ws.Cells(zeile, "X") = cho.Name
      ws.Cells(zeile, "Y") = tl.Type
      ws.Cells(zeile, "Z") = formel
      zeile = zeile + 1
   Next cho
End Sub

Das funktioniert auch einwandfrei, solange ich die Zahl der Diagramme nicht vermehre. Füge ich aber ein oder mehrere zusätzliche Diagramme hinzu, erhalte ich die Fehlermeldung 500. Wie muss ich den VBA-Text verändern, damit das Ganze  unabhängig von der Zahl von Diagrammen auf einem Datenblatt funktioniert ?

Hardbopper
Antworten Top
#2
Hallo Hardbopper,


hast Du bei den zusätzlichen Diagrammen auch die Anzeige der Formeln eingeschalten?

Du könntest nach Set tl....
diese Zeile hinzufügen:
tl.DisplayEquation = True
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Hardbopper
Antworten Top
#3
Hallo, schauan,

ich habe die Trendformeln eingeschaltet.

Hat das Problem vielleicht damit zu tun, dass die Diagramme, deren Formeln ausgelesen werden, Liniendiagramme sind und die neu dazu gekommenen Verbunddiagramme ?

Gruß Hardbopper
Antworten Top
#4
Hallo schauan,

es muss etwas mit dem Diagrammtyp zu tun haben. Ich habe jetzt die Wertetabelle in eine neue Arbeitsmappe kopiert und nach und nach die Diagramme dazu gegeben:

Bei den zwei ersten Diagrammen ( = Liniendiagramme) hat das Makro einwandfrei funktioniert, das dritte, ein Verbunddiagramm, hat folgende Fehlermeldung produziert:

Laufzeitfehler 1004: ungültiger Parameter und beim Debuggen wurde die Zeile: Set tl = ser.Trendlines (1)  markiert.

Ist das nicht ein Hinweis auf meine Vermutung ?

Gruß Hardbopper
Antworten Top
#5
Hallo schauan,

ich stelle mal das in aller Eile zusammengestellte "Hilfs"-Datenblatt hier ein, vielleicht lässt sich der Fehler am "lebenden Objekt" eher finden. 

Gruß Hardbopper


Angehängte Dateien
.xlsm   Test Trendformel auslesen.xlsm (Größe: 40,31 KB / Downloads: 5)
Antworten Top
#6
Hallo schauan,

das Problem ist gelöst: Vor lauter Datensätzen und Trendlinien habe ich den Überblick verloren. Zur Beruhigung aller, die am Thema interessiert sind: Das eingangs dargestellte Makro (mit Deiner Ergänzung) zum Auslesen einer Trendlinienformel funktioniert nach wie vor einwandfrei.

Nochmals vielen Dank

Hardbopper
Antworten Top
#7
Auch Hallo,

Du brauchst die Trendwerte von Kurven nicht aus dem Diagramm auzulesen, Du kannst die auch berechnen.

Suche dazu einfach mal auf http://www.herber.de/excelformeln und bitte suchen .../suche.html nach Trend oder Regression.

Für eine logarithmische Regression y = m * ln(x) + b ist:

m = INDEX(RGP(y-Werte;LN(x-Werte);;WAHR);1;1)

b = INDEX(RGP(y-Werte;LN(x-Werte);;WAHR);1;2)

Für Dein 1. Beispiel ist m:


Code:
=INDEX(RGP(C13:K13;LN(C11:K11-2006);;WAHR);1;1)


sowie b:


Code:
=INDEX(RGP(C13:K13;LN(C11:K11-2006);;WAHR);1;2)


HTH, Bernd
Antworten Top
#8
Hallo Bernd,

das ist mir schon klar, aber das Auslesen hat mich einfach gereizt.

Gruß Hardbopper
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste