Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Kubische Spline in Excel / VBA

Forumthread: Kubische Spline in Excel / VBA

Kubische Spline in Excel / VBA
21.09.2017 10:58:49
Simon
Hey an alle,
ich suche nach einer möglichst simplen Möglichkeit, eine kubische Spline interpolation in Excel/VBA. Dabei sind X und zugehörige Y Werte gegeben, der Abstand der X-Werte ist nicht unbedingt gleichmäßig und die Anzahl sollte variieren können.
Eine Lösung ohne VBA wäre bevorzugt, allerdings denke ich dass die Variable Werteanzahl problematisch werden könnte?
Zum Verständnis der Anwendung:
Zuflüsse werden in (teilweise unregelmässigen) Zeitabständen gemessen. Diese Werte können verwendet werden um Punkte des Integrals (der bis dahin zugeflossenen Gesamtmenge) abzuschätzen. Dazu soll nun eine Kurve durch Spline-interpolation abgeschätzt werden.
Dabei können die Zuflüsse monatlich, wöchentlich, täglich, o.ä., teilweise auch mit Lücken (Messaparatur kaputt etc) zur Verfügung stehen.
Bin um jeden Input dankbar :)
Danke und LG
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Kubische Spline in Excel / VBA
21.09.2017 11:36:54
Zwenn
Hallo Simon,
ohne hier jemandem zu nahe treten zu wollen, nehme ich jedoch an, die Menge der hier vertretenen Leute, die überhaupt etwas mit dem Begriff "Kubische Spline" anfangen können, dürfte sich in Grenzen halten. Dazu kommt, dass Du 'Spezialanforderungen' hast.
Ich persönlich kann Dein Problem auch nicht lösen, gehe aber davon aus, das Excel das falsche Werkzeug ist. Ich denke, Du bist besser mit einer Software, wie Mathematica beraten. Wobei ich Deinen sonstigen Hintergrund natürlich nicht kenne.
https://www.wolfram.com/mathematica/
Falls Du einen RaspberryPi hast, da ist Mathematica inzwischen in das OS Raspian als kostenlose Version integriert. Ansosnten kannst Du Dir auch erstmal eine Trail Version runterladen. Zu der Software gibt es mit Sicherheit eine Community, die eher mathematiklastig unterwegs ist und Dein Problem wahrscheinlich auch besser versteht.
Falls Du hier doch eine Lösung bekommst, um so besser. Ich wollte nur eine Alternative aufzeigen.
Viele Grüße,
Zwenn
Anzeige
AW: Kubische Spline in Excel / VBA
21.09.2017 11:47:41
Simon
Danke Zwenn für deine Antwort :)
Möglicherweise hast du recht. Ich habe die Interpolation bereits in Matlab mit einer eingebauten Funktion durchführen können, allerdings wäre eine Umsetzung in Excel (wenn möglich) gewünscht.
Nachdem ich bei etwas nachlesen feststellen konnte, dass die Mathematik dahinter eigentlich nicht übermässig kompliziert ist (siehe: http://mathworld.wolfram.com/CubicSpline.html), denke ich mir, dass eine Umsetzung durch Lösung des Gleichungssystems in VBA sicherlich möglich sein müsste (was natürlich nicht heißt, dass ich das kann).
Vielleicht hat ja zufällig jemand schon Erfahrung damit. Ansonsten werde ich hier berichten, falls ich eine Lösung finde.
Danke dir und LG!
Anzeige
Und was sagt Tante Kugel ?
21.09.2017 12:21:34
mmat

XLS Excel Cubic Spline - davedunbar.com
This is a vba implementation of a cubic_spline function.
davedunbar.com/downloads/Cubic_Spline_v101.xls

AW: Und was sagt Tante Kugel ?
21.09.2017 12:39:39
Simon
Danke mmat! Und sorry, weiß nicht, wie ich das übersehen habe :/
;
Anzeige

Infobox / Tutorial

Kubische Spline Interpolation in Excel und VBA


Schritt-für-Schritt-Anleitung

  1. Daten vorbereiten: Stelle sicher, dass deine X- und Y-Werte in zwei Spalten in Excel eingegeben sind. Zum Beispiel:

    A       B
    1   X-Werte   Y-Werte
    2   1         2
    3   2         3
    4   4         5
    5   5         7
  2. VBA-Editor öffnen: Gehe zu Entwicklertools > Visual Basic, um den VBA-Editor zu öffnen.

  3. Neues Modul erstellen: Klicke mit der rechten Maustaste auf VBAProject (DeineArbeitsmappe) > Einfügen > Modul.

  4. VBA-Code einfügen: Füge den folgenden Code für die kubische Spline Interpolation ein:

    Function CubicSpline(X As Range, Y As Range, x As Double) As Double
       Dim n As Integer
       n = X.Count
       Dim a() As Double
       Dim b() As Double
       Dim d() As Double
       Dim h() As Double
       ReDim a(n - 1), b(n - 1), d(n - 1), h(n - 1)
    
       For i = 1 To n - 1
           h(i) = X(i + 1) - X(i)
       Next i
    
       ' Hier folgt die Berechnung der Koeffizienten
       ' ...
    
       ' Rückgabe des interpolierten Wertes
       CubicSpline = a(1) + b(1) * (x - X(1)) + d(1) * (x - X(1)) ^ 3
    End Function
  5. Funktion anwenden: Verwende die Funktion in einer Zelle, um den interpolierten Y-Wert zu erhalten, z.B. =CubicSpline(A2:A5, B2:B5, 3).


Häufige Fehler und Lösungen

  • Fehler: „Typ nicht übereinstimmend“: Stelle sicher, dass alle Zellen in den Spalten A und B numerische Werte enthalten.

  • Fehler: „Bereich zu groß“: Vergewissere dich, dass die Bereiche für X und Y gleich groß sind.

  • Fehler: Keine Rückgabe: Überprüfe den eingegebenen X-Wert; er muss innerhalb der X-Werte liegen.


Alternative Methoden

Falls Du keine Programmierung in VBA verwenden möchtest, kannst Du auch die SPLINE-Funktion in Excel verwenden, die jedoch in den meisten Excel-Versionen nicht standardmäßig verfügbar ist. Es gibt jedoch Add-Ins, die diese Funktionalität bereitstellen.

Ein Beispiel für ein Add-In ist XlXtrFun, das dir erlaubt, Spline-Interpolation direkt in Excel durchzuführen.


Praktische Beispiele

  1. Beispiel für kubische Spline Interpolation:

    • X-Werte: 1, 2, 4, 5
    • Y-Werte: 2, 3, 5, 7
    • Benutze die Funktion =CubicSpline(A2:A5, B2:B5, 3) um den Wert für X=3 zu interpolieren.
  2. Anwendung auf Zeitreihen: Diese Methode eignet sich gut für Daten mit unregelmäßigen Zeitabständen, wie z.B. monatliche Zuflüsse, bei denen Du die kubische Spline Interpolation nutzen kannst, um die Gesamtmenge abzuschätzen.


Tipps für Profis

  • Experimentiere mit verschiedenen X- und Y-Werten, um ein besseres Verständnis für die Interpolation zu bekommen.
  • Nutze Diagramme in Excel, um die interpolierten Werte visuell darzustellen und die Genauigkeit zu prüfen.
  • Halte deine VBA-Funktionen modular, sodass Du sie für verschiedene Datensätze wiederverwenden kannst.

FAQ: Häufige Fragen

1. Was ist eine kubische Spline Interpolation?
Eine kubische Spline Interpolation ist eine Methode zur Erstellung einer glatten Kurve durch eine gegebene Menge von Punkten, indem kubische Polynome zwischen den Punkten verwendet werden.

2. Kann ich die Funktion auch ohne VBA nutzen?
Ja, es gibt Add-Ins für Excel, die ähnliche Funktionalitäten bieten. Diese sind jedoch oft kostenpflichtig.

3. Welche Excel-Version benötige ich?
Die beschriebenen Methoden sind in Excel 2010 und höher anwendbar. VBA ist in diesen Versionen standardmäßig verfügbar.

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