Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

SPLINE-Funktion für Reihen-Bereich

Forumthread: SPLINE-Funktion für Reihen-Bereich

SPLINE-Funktion für Reihen-Bereich
30.04.2018 10:17:13
KeLo
Hallo,
für eine Interpolation von Lastgangdaten habe ich diese schöne SPLINE-Funktion verwendet:
https://www.herber.de/forum/archiv/736to740/739714_MessdatenAnpassung_durch_kubische_Splines.html
Die Funktion funktioniert hervorragend für meinen ersten Anwendungsfall, wo meine Zeitreihen jeweils in Spalten vorliegen (Zeitstempel A1:A8760, Lastdaten B1:B8760, Zeitstempel 15-minütig C1:C35040, interpolierte Werte werden in Spalte D ausgegeben).
Ich wollte die Funktion jetzt für eine ähnliche Aufgabe verwenden, nur, dass diesmal die Zeitstempel und zugehörigen Daten horizontal angeordnet sind (Zeitstempel A1:X1, Lastdaten A2:X2, Zeitstempel 15-minütig A3:FB3, interpolierte Werte sollen in Zeile 4 ausgegeben werden).
Leider kommt immer ein #VALUE-error zurück. Excel/VBA sagt mir leider nicht, an welcher Stelle genau der Fehler auftritt. Bei meiner Fehlersuche kam ich darauf, dass es eigentlich nur an der horizontalen Anordnung liegen kann, da ich die gleichen Werte auch noch einmal vertikal angeordnet berechnet habe und es hier kein Problem war.
Die Frage ist nun: Warum ist das so und wie kann ich das beheben?
Ich könnte natürlich die Tabelle transponieren und dann die Funktion anwenden, was aber leider mit einigem Aufwand verbunden wäre, weshalb ich lieber das Ursprungsproblem lösen würde.
Meinem Verständnis nach definiert der Ausdruck "A1:X1" eine range, unabhängig von vertikaler oder horizontaler Anordnung, weshalb ich nicht verstehe, warum es vertikal klappt und horizontal nicht.
Die Funktion wird wie folgt definiert:
Public Function cubspline(Method As Integer, xi As Double, _
xx As Object, yy As Object) As Double
xi ist der Zeitstempel, für den ich interpolieren möchte, xx der Zeitstempel der ursprünglichen Auflösung und yy die Lastdaten in der ursprünglichen Auflösung. Die Formel wird dann in die jeweilige Zelle zu dem zeitlichen Zwischenschritt kopiert: A4=cubspline(1;A3;$A$1:$X$1;$A$2:$X$2)
[Method ist hier nicht von Bedeutung, hat den Wert 1]
Kann es an der Definition der Variablen liegen?
Herzlichen Dank im Voraus!
[Excel 2016]
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: SPLINE-Funktion für Reihen-Bereich
01.05.2018 06:49:00
coachyou
Hallo KeLo,
versuch es mal mit :
=cubspline(1;A3;MTRANS($A$1:$X$1);MTRANS($A$2:$X$2))
GGf. als Matrixformel eingeben.
Gruß Coachyou
AW: SPLINE-Funktion für Reihen-Bereich
02.05.2018 10:19:51
KeLo
Hallo coachyou,
danke, die Idee hatte ich auch schon und es hat leider nicht funktioniert...(auch mit STRG*SHIFT+ENT).
Ich finde das wirklich merkwürdig, weil es ja eigentlich nur um einen beliebiges Array geht. Die Variablen, die die Bereiche mit den vorhandenen Werten enthalten, xx und yy, sind als "Object" definiert in VBA. Kann es damit zusammenhängen?
Anzeige
AW: SPLINE-Funktion für Reihen-Bereich
02.05.2018 10:25:22
KeLo
Irgendwelche anderen Ideen?
Kennt jemand Achim Blok?
03.05.2018 14:30:04
KeLo
Oder kennt jemand vielleicht den Autor des Codes, Achim Blok? Oder gibt es eine Möglichkeit, Verfasser archivierter Forumsbeiträge zu suchen und zu kontaktieren? Vielleicht hat er ja noch Ahnung...
Danke nochmal!
;
Anzeige

Infobox / Tutorial

SPLINE-Funktion für Reihen-Bereich in Excel


Schritt-für-Schritt-Anleitung

  1. Vorbereitung der Daten: Stelle sicher, dass Deine Zeitstempel und Lastdaten korrekt eingegeben sind. Bei vertikalen Anordnungen sind Zeitstempel in Spalte A und Lastdaten in Spalte B vorgesehen. Für horizontale Anordnungen verwende Zeile 1 und Zeile 2.

  2. Definiere die SPLINE-Funktion: Verwende die folgende VBA-Definition für die Funktion:

    Public Function cubspline(Method As Integer, xi As Double, xx As Object, yy As Object) As Double

    Hierbei ist xi der Zeitstempel, den Du interpolieren möchtest, xx sind die Zeitstempel der ursprünglichen Daten und yy sind die Lastdaten.

  3. Anwendung der Funktion: In einer Zelle, in der Du den interpolierten Wert erhalten möchtest, füge die Formel ein:

    =cubspline(1;A3;$A$1:$X$1;$A$2:$X$2)

    Achte darauf, die Formel in der richtigen Anordnung (vertikal oder horizontal) zu verwenden.

  4. Matrixformel eingeben: Bei horizontaler Anordnung kann es notwendig sein, die Formel als Matrixformel einzugeben. Drücke dafür STRG + SHIFT + ENTER nach der Eingabe der Formel.


Häufige Fehler und Lösungen

  • #VALUE! Fehler: Dieser Fehler tritt häufig bei der Verwendung von horizontalen Daten anstelle von vertikalen Daten auf. Eine Lösung ist, die Daten mit der MTRANS-Funktion zu transponieren:

    =cubspline(1;A3;MTRANS($A$1:$X$1);MTRANS($A$2:$X$2))
  • Objektdefinition: Wenn die Variablen xx und yy als "Object" definiert sind, kann dies zu Problemen führen. Überprüfe die Definition und stelle sicher, dass die Daten korrekt übergeben werden.


Alternative Methoden

Falls die SPLINE-Funktion nicht funktioniert, kannst Du auch die Excel Interpolation Funktion verwenden. Eine Alternative ist die Verwendung von Scatter-Diagrammen zur visuellen Darstellung und manuellen Interpolation.


Praktische Beispiele

  1. Vertikale Anordnung:

    • Zeitstempel in A1:A8760 und Lastdaten in B1:B8760.
    • Interpolation für einen neuen Zeitstempel in C1 könnte so aussehen:
      =cubspline(1;C1;$A$1:$A$8760;$B$1:$B$8760)
  2. Horizontale Anordnung:

    • Zeitstempel in A1:X1 und Lastdaten in A2:X2.
    • Interpolation für einen neuen Zeitstempel in A3 könnte so aussehen:
      =cubspline(1;A3;MTRANS($A$1:$X$1);MTRANS($A$2:$X$2))

Tipps für Profis

  • Nutze die excel spline interpolation vba für automatisierte Berechnungen in großen Datenmengen.
  • Überlege, ob Du die Daten für bessere Performance in eine Tabelle umwandeln kannst.
  • Halte Deine Excel-Version auf dem neuesten Stand, um von den neuesten Funktionen und Verbesserungen zu profitieren.

FAQ: Häufige Fragen

1. Warum funktioniert die SPLINE-Funktion nur mit vertikalen Daten?
Die SPLINE-Funktion benötigt eine spezifische Datenanordnung. Bei horizontalen Anordnungen kann es nötig sein, die Daten zu transponieren oder als Matrixformel zu arbeiten.

2. Was kann ich tun, wenn ich weiterhin Fehler erhalte?
Überprüfe die Definition der Variablen in Deiner VBA-Funktion und stelle sicher, dass die Datenformate korrekt sind. Alternativ kannst Du die MTRANS-Funktion verwenden, um die Daten zu transponieren.

3. Gibt es eine einfachere Methode zur Interpolation in Excel?
Ja, Du kannst die excel interpolation function verwenden oder Scatter-Diagramme zur visuellen Inspektion und Interpolation nutzen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige