Linear Interpolieren mit Excel

Gladiator6

Lt. Commander
Registriert
Aug. 2004
Beiträge
1.244
Hallo

Ich möchte nach folgendem Schema linear Interpolieren:

Aus dem:

X Y
1 10
2 ?
3 ?
4 ?
5 10

soll das entstehen:

X Y
1 10
2 10
3 10
4 10
5 10

oder aus dem:
X Y
1 10
2 ?
3 ?
4 ?
5 50

soll das entstehen:

X Y
1 10
2 20
3 30
4 40
5 50

Das Prinzip ist simpel und sollte klar sein. An der Umsetzung happerts jedoch wie so oft.

Ziel ist es, Y-Spalten in einem grösseren Excel Dokument zu vervollständigen!

Hat grad jemand eine Idee wie das am einfachsten zu bewerkstelligen ist?

Edit:

Im Prinzip suche ich die einfachste Möglichkeit in einer Spalte 2 Zellen zu markieren, und die leeren Zellen dazwischen entsprechend auszufüllen.

zB.

1
?
?
?
2

soll werden zu:

1
1.25
1.5
1.75
2
 
Zuletzt bearbeitet:
Wenn die Schrittgrösse Linear (gleichbleibend ist, ist dies doch kein Problem... gib 1 und in der nächsten Zeile 1.25 ein und ziehs runter auf die gewünschte grösse --> 2
 
Ist sie aber nicht, und die Anzahl der fehlenden Werte ist (zumindest nicht explizit) nicht immer gleich, laut er Beschreibung.
Ich bastele gerade eine manuelle Dreisatz-Lösung, aber schön ist das nicht - mir fehlt eine Möglichkeit, Bereiche dynamisch zu bauen...

Wenn ich was fine poste ich hier wieder.


()
 
Jup wäre dann Faktor x (Feld A10-Feld A1)

Und für den Faktor x gleich 1 durch Anzahl der Felder .

hm wie wäre es mit Mittelwert geht aber nur bei ungeraden Bereichen dann .
 
Zuletzt bearbeitet:
Ich habe noch was dazu gefunden:

http://www.blueleafsoftware.com/Products/Dagra/LinearInterpolationExcel.php

Bin aber noch nicht wirklich schlau draus geworden wie das umgesetzt ist.

Kann doch nicht so schwierig sein Excel dazu zu bringen in einer Spalte den Bereich zwischen 2 Zellen entsprechend der Anzahl Zellen dazwischen auszufüllen.

Die lineare Interpolation ist hier anschaulich erklärt:
http://www.peter-junglas.de/fh/vorlesungen/thermodynamik1/html/app-a.html

Ich habe diese Methode schon tausendfach verwendet, aber meistens von Hand und habe sie noch nie mit Excel umgesetzt.
 
Jo die Formel geht wenn du X = Anzahl der Spalten hast und Y somit die Zahlen die du brauchst einfach zusammenbasteln ..

Also am besten Spalte A dann von 1 bis xxx Numerieren somit hast du einen Bezug für die X Achse ... für Y und Y1 hast du ja die 2 festen Werte vorgegeben wie z.b. 10 und 50 .

roblem bei der Formel ist aber das man sie nicht einfach kopieren kann da einige Werte halt eine feste Postion haben und andere halt mitlaufen sollen .

Wenn du z.b. die 1. Zahl die 10 in einer extra Spalte noch ablegst sowie die letzte Zahl genauso dann kann man per Formel und Copy + Paste arbeiten .

Hab es mal so getestet

Spalte A Zahlen von 1 bis 19

Spalte B -> Zahl 1 = 20 Zahl 19 = 1000

Spalte E = 20
Spalte F = 1000

dann ginge die Formel so .
=(E1+(A2-1)*(F1-E1)/(19-1))
 
Zuletzt bearbeitet:
Der Link sieht ganz gut aus. In dem herunterladbaren xls ist eine Beispielimplementierung drin, die etwa das macht, was in Post #4 vorgeschlagen ist.
In der Datei werden übrigens automatisch die deutschen Formelnamen eingesetzt, falls dir die englischen Funktionen nichts sagen.

Vielleicht kannst du sogar die Beispeiltabelle mit deinen Daten anpassen und erweitern?


()
 
geht zwar nicht mit "einfach Zeilen nach unten ziehen" aber einmal verstanden, löst man das ganze so in 15sek.


Unbenannt.png
 
Zuletzt bearbeitet:
Ich kann zwar kein vba aber bitte:
Code:
Sub linear_fuellen()
    Dim Start As Double
    Dim Ende As Double
    Dim Weite As Double
    Dim Anzahl As Integer
    
    Dim i As Integer
    
    Anzahl = Selection.Rows.Count
    Start = Selection.Cells(1).Value
    Ende = Selection.Cells(Anzahl).Value
    Weite = (Ende - Start) / (Anzahl - 1)
    
    For i = 1 To Anzahl
        Selection.Cells(i) = Start + (i - 1) * Weite
    Next i

End Sub
Ist die erste oder letzte Zelle leer, wird das als 0 aufgefasst, Zeilen in der Mitte werden ignoriert und Buchstaben crashen. Mehrere Spalten ergeben einfach keinen Sinn.
Kannst dir dann auf einen Hotkey oder eine Symbolleiste legen.
 
Zwar nicht ganz Deutsch aber probiers einmal damit:

A___B___C
1___1___=SCHÄTZER($A1;$B$1:$B$9;$A$1:$A$9)
2___ ___ =SCHÄTZER($A2;$B$1:$B$9;$A$1:$A$9)
3___ ___=SCHÄTZER($A3;$B$1:$B$9;$A$1:$A$9)
4___ ___usw...

9___2___einfach runterziehen
 
Zuletzt bearbeitet:
Vielen Dank schon mal für die zahlreichen Antworten.

@ Restecp

Diese Methode ist für meine Anwendung leider viel zu umständlich, da ich ungefähr eine Matrix mit 500x200 Einträgen habe wo ich häufig interpolieren muss.

@ simpsonsfan

Dein Code ist genau das was ich gesucht habe!! Vielen Dank!

So kann ich nun einfach einen Bereich einer Spalte markieren, Makro ausführen, und fertig :-)
 
Zuletzt bearbeitet:
Ich kanns halt nicht wirklich, muss mir erst bei Google die Methoden zusammensuchen und fange bspw. Laufzeitfehler beim Teilen durch 0 nicht auf. Wenn man es bestimmungsgemäß verwendet, sollte es aber seinen Zweck erfüllen. Und ich verbessre dabei ein bisschen meine marginalen VBA Kenntnisse.
 
So schlecht sind deine Fähigkeiten also nicht ;-)

Ist genau das was ich gebraucht habe!

Ich mache viel mit Matlab, Excel brauche ich eher selten. Für gewisse Dinge eignet sich Excel aber besser. Es ist dann jeweils ärgerlich wenn man sich erst einige Stunden mit Excel befassen muss um etwas relativ simples hinzu bekommen... Zum Glück gibt es CB ;-)
 
Mit Matlab sollte ich mich auch mal beschäftigen, programmieren könnte ich da nichts, unser Prof in "Softwarewerkzeuge" hatte glaub ich davon auch nicht ganz so Ahnung, da gings grad mal ums Matrizen erstellen und so.

Aber stimmt, dazu ist CB ja da, bin froh, dass ich helfen konnte.
 
Zurück
Oben