Microsoft Excel

Herbers Excel/VBA-Archiv

lineare interpolation mit sverweis



Excel-Version: 10.0 (Office XP)

Betrifft: lineare interpolation mit sverweis
von: Klaus Berner
Geschrieben am: 09.06.2002 - 14:40:45

In Spalte A liegen aufsteigend sortiert gemessene x-Werte und in Spalte B die zugehörigen y Werte vor. Ich will einen beliebigen x-Wert (z.B. zwischen 2 Meßwerten) eingeben und den zugehörigen y-Wert (linear interpoliert zwischen den zugehörigen Werten) zurückbekommen. Weiß jemand, wie das halbwegs elegant zu lösen ist? Trend hilft nicht weiter, da nur zwischen den benachbarten Werten inpoliert werden soll.
Ich stell mir eine Lösung mit sverweis und .... vor.

Danke!!!!

einfaches Beispiel
x: y:

3 5
5 7
6 8

Eingabe
4
interpoliertes Ergebnis:
6

oder Eingabe 5,5
interpol. Ergebnis 7,5


  

Re: lineare interpolation mit sverweis
von: Berai
Geschrieben am: 09.06.2002 - 15:41:47

Hallo Klaus,

versuch's mal so

~tablea
x y Eingabe
3 5 3,2 6
5 7
6 8
Formel in D1
=(INDEX($A$2:$B$4;VERGLEICH($C2;$A$2:$A$4;1);2)+INDEX($A$2:$B$4;VERGLEICH($C2;$A$2:$A$4;1)+1;2))/2
~tablez

Gruß
Rainer

  

nochmal
von: Berai
Geschrieben am: 09.06.2002 - 15:45:46

Tilde vergessen


MS Excel von Berai an Berai
 ABCDEF
1xyEingabe  
2353,26  
357    
468    
5FormelinD1   
6=(INDEX($A$2:$B$4;VERGLEICH($C2;$A$2:$A$4;1);2)+INDEX($A$2:$B$4;VERGLEICH($C2;$A$2:$A$4;1)+1;2))/2      


  

Re: nochmal
von: Berai
Geschrieben am: 09.06.2002 - 15:49:22

Hallo Klaus,

entschuldige das Durcheinander, heute will garnichts klappen.
Die Formel steht natürlich in D2.

Gruß
Rainer


  

Re: lineare interpolation mit sverweis
von: Philip
Geschrieben am: 09.06.2002 - 16:02:45

Eingabe in zum Bsp. "D1"
X-Werte in Spalte "A"
Y-Werte in Splate "B"

in "D1"; EINGABE Beispiel Werte 5,5
in "D2"; =SVERWEIS(D1;A1:A100;1;WAHR)
in "D3"; =VERGLEICH(D2;A1:A100)
in "D4"; =INDEX(A:A;D3+1)
in "E2"; =SVERWEIS(D2;A1:B100;2;FALSCH)
in "E4"; =SVERWEIS(D4;A1:B100;2;FALSCH)

LÖSUNG in "E1"; =E2+(E4-E2)*(D1-SVERWEIS(D1;A1:A100;1;WAHR)/(INDEX(A:A;D3+1)-SVERWEIS(D1;A1:A100;1;WAHR)))

... aber es gibt bestimmt noch einfacher :-)))

Gruß,
Philip

  

Re: lineare interpolation mit sverweis
von: Philip
Geschrieben am: 09.06.2002 - 16:04:00

Ist diese Lösung wirklich "LINEAR INTERPOLATION" ?

Gruß,
Philip


  

Kommando zurück
von: Berai
Geschrieben am: 09.06.2002 - 16:30:37

Hallo Klaus,

vergiß meinen Beitrag, er war nicht zu Ende gedacht.

Hallo Philip,

Du hast Recht, da ist nichts von linear. Ist wohl nicht mein Tag.
Deine Formel hat aber auch eine Macke. Gib mal einen Wert zwischen 3 und 5 ein.
Eingaben zwischen 5 und 6 kommen richtig.

Gruß
Rainer


  

Re: Kommando zurück
von: philip
Geschrieben am: 09.06.2002 - 16:34:54

Oh!
Was habe ich da gemacht, ...
Warte, ...

  

Re: lineare interpolation mit sverweis
von: Hans W. Hofmann
Geschrieben am: 09.06.2002 - 16:41:31

ALso Kinder machen wir das richtig:
Verwende die Funktion TREND, etwa
=TREND(B1:B3;A1:A3;A4)

Gruß HW

  

Re: Kommando zurück
von: Philip
Geschrieben am: 09.06.2002 - 16:44:16

:-))

Ich hatte 1 (.. ) vergessen !

=E2+(E4-E2)*(D1-SVERWEIS(D1;A1:A100;1;WAHR))/((INDEX(A:A;D3+1)-SVERWEIS(D1;A1:A100;1;WAHR)))

Es funktionniert leider nicht für die letzte Zeile, da hast du recht, ...na ja.

Bis später,
Phil.

  

Re: lineare interpolation mit sverweis
von: Philip
Geschrieben am: 09.06.2002 - 16:45:50

OK ok, ...
Ich lerne auch :-)))

Gruß,
Phil.

  

Re: lineare interpolation mit sverweis
von: Klaus Berner
Geschrieben am: 09.06.2002 - 17:10:32

Liber HW,
ich will ja gerade nicht mit TREND (zumindest nicht auf die ganze Spalte bezogen arbeiten) arbeiten, da TREND auf die ganze Spalte (mit den Werten) bezogen irgendeine Funktion hineinlegt. Ich will linear zwischen den beiden maßgebenden x-Werten interpolieren; Trend zwischen den beiden maßgebenden x-Werten würde also passen; aber wie finde ich auf eine einfache Weise die Stelle der beiden x-Werte (ohne vba!)??

  

Re: lineare interpolation mit sverweis
von: Berai
Geschrieben am: 09.06.2002 - 17:38:51

Hallo Klaus,

habe noch mal nachgedacht und hoffe, dass ich jetzt richtig liege.


MS Excel von Berai an Klaus Berner
 ABCD
1xyEingabe
21,5233,945,2
334 
44,56 
568 
67,510 
7912 
810,514 
91216 
1013,518 
111520 
1216,522 
131824 
1419,526 
152128 
1622,530 
172432  
1825,534  
192736  
2028,538  
213040  
2231,542  
233344  
2434,546  
253648  
2637,550  
273952  
2840,554  
294256  
3043,558  


Die Formel in der Ergebniszelle lautet:

=INDEX($A$2:$B$30;VERGLEICH($C2;$A$2:$A$30;2);2)*C2/INDEX($A$2:$B$30;VERGLEICH($C2;$A$2:$A$30;1);1)

Gruß
Rainer

  

Re: lineare interpolation mit sverweis
von: Hans W. Hofmann
Geschrieben am: 09.06.2002 - 17:41:28

Naja, zwei Punkte bilden eine Gerade. Keiner zwingt Dich drei oder mehr Punkte in die Regression einzubeziehen.
Host me?


Gruß HW


  

Re: lineare interpolation mit sverweis
von: Klaus Berner
Geschrieben am: 09.06.2002 - 18:17:28

Lieber HW,
wir reden immer noch aneinander vorbei. Ich muss zunächst die beiden maßgebenden x-Werte aus der gesamten Spalte suchen, zwischen denen ich dann interpolieren kann. Das ist mein eigentliches Problem!!! Nicht die Interpolation zwischen den beiden gefundenen Werten.
Vielleicht weißt Du dafür eine Lösung.
Danke! Klaus

  

Re: lineare interpolation mit sverweis
von: Klaus Berner
Geschrieben am: 09.06.2002 - 20:46:56

Mithilfe der Antworten habe ich jetzt eine Antwort selbst gefunden:
x enthält in einer Spalte die gemessenen x-Werte (ansteigend)
y in einer Spalte die zugehörigen y-Werte
x0 ist der x-Wert, zu dem der zugehörige y-Wert linear zwischen dem nächst kleineren x und dem nächst größeren x-Wert ermittelt werden soll.
- mit vergleich wird der Index des "unteren" x-Wertes ermittelt
- dann mit TREND linear zwischen diesem unteren und dem nächsten x -Wert linear interpoliert.

=TREND(INDEX(y;VERGLEICH(x0;x;1);1):INDEX(y;VERGLEICH(x0;x;1)+1;1);INDEX(x;VERGLEICH(x0;x;1);1):INDEX(x;VERGLEICH(x0;x;1)+1;1);x0)

Geht das nicht vielleicht etwas einfacher?

Klaus

  

was genau willst Du?
von: Berai
Geschrieben am: 09.06.2002 - 21:47:24

Hallo Klaus,

ich habe Deine Formel mal auf die von mir um 17:39 gesendete Tabelle zugeschnitten, sie lautet:

=TREND(INDEX(B2:B30;VERGLEICH(C2;A2:A30;1);1):INDEX(B2:B30;VERGLEICH(C2;A2:A30;1)+1;1);INDEX(A2:A30;VERGLEICH(C2;A2:A30;1);1):INDEX(A2:A30;VERGLEICH(C2;A2:A30;1)+1;1);C2)

sie bringt exakt das gleiche Ergebnis wie meine Formel, die da lautet:

=INDEX($A$2:$B$30;VERGLEICH($C2;$A$2:$A$30;2);2)*C2/INDEX($A$2:$B$30;VERGLEICH($C2;$A$2:$A$30;1);1)

Weiterhin habe ich die Excel-Funktion TREND(), wie von Hans vorgeschlagen, auf mein Tabellenmuster zugeschnitten, sie lautet:

=TREND(B2:B30;A2:A30;C2;0)

auch diese bringt exakt das gleiche Ergebnis wie beide vorgenannten Formeln.
Jetzt bin ich einigermaßen irretiert, was Du nun eigentlich berechnen willst?

Gruß
Rainer



  

Re: was genau willst Du?
von: Klaus Berner
Geschrieben am: 09.06.2002 - 23:02:28

Lieber Rainer, Du hast eine lineare Funktion vorgegeben, dann funktioniert das natürlich bzw. stimmen die Ergebnisse überein;
meine Funktion ist aber beliebig, z.b. muß für das nachfolgende Beispiel für x=1,15 der y-Wert 20,75 rauskommen.
Mit Deiner Antwort kommt bei mir 23,418 und mit Trend 10,69 raus.
Ich habe x-Y Wertepaare, dabei sind die x-Werte sortiert.
Für einen einzugebenden x-Wert will ich den y-Wert nur aus den beiden "benachbarten" x bzw. y Werten interpolieren.
Danke!
Klaus


MS Excel von Klaus Berner an Berai
 AB
11,027,2
21,122,4
31,219,1
41,316,8
51,415,0
61,513,7
71,612,7
81,711,9
91,811,3
101,910,8
112,010,4




  

Hab's jetzt begriffen
von: Berai
Geschrieben am: 10.06.2002 - 07:01:12

Hallo Klaus,

nachdem ich die, sich aus Deinen Datenreihen ergebende Kurve, in einem xy-Diagramm dargestellt habe, ist mir klar geworden was Du willst und dass Deine Formel stimmt.

Auf zu neuen Problemen :-))

Gruß
Rainer

  

Re: Hab's jetzt begriffen
von: Klaus Berner
Geschrieben am: 10.06.2002 - 07:32:47

Aber gibt's dafür nicht eine "elegantere" Möglichkeit, da ich in vielen Tabellen Werte ermitteln muß.

Gruß

Klaus


  

Re: Hab's jetzt begriffen
von: Berai
Geschrieben am: 11.06.2002 - 11:00:29

Hallo Klaus,

habe Dir gestern eine Mail geschickt mit einer Lösung.
Allerdings weiss ich nicht, ob das hier auch eine brauchbare Mail-Adresse war.

Gruß
Rainer


 

Beiträge aus den Excel-Beispielen zum Thema "lineare interpolation mit sverweis"