> Hallo,
> aus einer Tabelle mit nicht ganz regelmäßigen Werten möchte ich
> Ergebniswerte aus Zwischenwerte der Eingangszahlen bilden. So eine
> Tabelle sieht bspw. so aus:
>
> A B C D E
> 30 40 50 60
> 1 1000 801 701 613 528
> 2 2000 708 608 611 525
> 2 3000 707 606 519 524
> 4 4000 706 606 518 523
Ähm; eine Zeile 0 gibt es nicht; das muss so ausschauen:
A B C D E
1 30 40 50 60
2 1000 801 701 613 528
3 2000 708 608 611 525
4 3000 707 606 519 524
5 4000 706 606 518 523
>
> Wenn jetzt das Wertepaar 43/2700 die in den Spalten-/Zeilenköpfen
> gelisteten Eingangswerte bildet, müsste ein Wert zwischen den Zellen C2
> und D3 herauskommen,
Und dementprechend C3 und D4 heißen.
> und zwar mit der Gewichtung 30% über Spalte C in
> Richtung D und 70% über Zeile 2 in Richtung 3.
Genau so würde ich auch vorgehen; d. h. zuerst würde ich vertikal
zwischen C3 und C4 sowie zwischen D3 und D4 linear interpolieren, und
dann horizontal zwischen diesen beiden Zwischenwerten (man könnte
natürlic hauch umgekehrt vorgehen, das Ergebnis ist das gleiche)). Das
geht entweder über Hilfszellen oder in einem Makro.
Ich stell mal die erstere Variante vor, ausführlich, zum verstehen.
Angenommen, als Hilfszellen wird die Spalte H verwendet, und die
Eingangswerte stehen in H1 bzw. H2:
H1 = 43
H2 = 2700
Dann kann in H3 erst mal die vertikale Position des unteren Grenzwertes,
und folgend die beiden Grenzwerte sowie den Abstand (dahinter als String
immer der Zellwert):
H3 = VERGLEICH(H$2;A2:A5;1) "2"
H4 = VERSCHIEBUNG($A$1;H3;0) "2000"
H5 = VERSCHIEBUNG($A$1;H3+1;0) "3000"
H6 = H5-H4 "1000"
Und der relative Abstand:
H7 = (H2-H4)/H6 "0,7"
Und das gleiche mit den horizontalen Werten:
H8 = VERGLEICH(H$1;B1:E1;1) "2"
H9 = VERSCHIEBUNG($A$1;0;H7) "40"
H10 = VERSCHIEBUNG($A$1;0;H7+1) "50"
H11 = H9-H8 "10"
H12 = (H1-H9)/H11 "0,3"
Jetzt kannst du die Ausgangswerte Zwischenspeichern:
H13 = VERSCHIEBUNG($A$1;H$3;H$7) "608"
H14 = VERSCHIEBUNG($A$1;H$3+1;H$7) "606"
H15 = VERSCHIEBUNG($A$1;H$3;H$7+1) "611"
H16 = VERSCHIEBUNG($A$1;H$3+1;H$7+1) "519"
Jetzt kannst du vertikal interpolieren:
H17 = H13+((H14-H13)*H7) "606,6" (entspricht sozusagen Zelle C4,3)
H18 = H15+((H16-H15)*H7) "546,6" (entspricht sozusagen Zelle D4,3)
Und horizontal:
=H17+((H18-H17)*H12) "588,6" (entspricht sozusagen Zeile 3,7)
> Dazu stelle ich mir eine Formel vor,
/Eine/ Formel reicht da nicht, das ist schon eine komplexerer
Algorithmus. Und schreit eigentlich auch nach einem Makro, aber dafür
muss man etwas Erfahrung haben (die ich vorsichtshalber erst mal nicht
voraussetze).
> die die beiden Eingangswerte aus
> jeweils einer eigenen Zelle entnimmt und dann in der Tabelle schaut, wo
> der Eingangswert darunter und der darüber zu finden ist, die relativen
> Abstände ermittelt und daraus dann den gewichteten Zwischenwert
> errechnet, und das zugleich in X- wie in Y-Richtung. Das scheint mir
> einigermaßen komplex, aber der Bedarf daran ist sicher kein Einzelfall.
Doch; eindimensionales Interpolieren ist mir gelegentlic hschon mal
unter gekommen, aber du bist der erste, der das zweidimensional möchte.
> Gibt es vielleicht irgendwo eine Vorlage, von der ich abkupfern und
> lernen kann?
Ich fürchte, nein.
Wolfgang