Am 13.02.2021 um 16:41 schrieb Boris Kirkorowicz: > > 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 -- -- Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org Probleme? https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/ Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de Listenarchiv: https://listarchives.libreoffice.org/de/users/ Datenschutzerklärung: https://www.documentfoundation.org/privacy