Einen schönen Guten Abend,
ich habe folgende Tabelle (immer in sortierter Form) vorliegen. Die Tabelle kann vom Anwender des Programmes beliebig bearbeitet werden. Sprich es können neue Wertepaare für q und w dazu kommen. Es ist allerdings nie möglich einen Wert für q doppelt einzutragen (und wenn sich ein wert für q einordnet, ordnet sich auch der wert für w ein).
q |
w |
0,99 |
2,3263 |
0,98 |
2,0573 |
0,97 |
1,8808 |
0,96 |
1,7507 |
0,95 |
1,6449 |
0,94 |
1,5548 |
0,93 |
1,4758 |
0,92 |
1,4051 |
0,91 |
1,3408 |
0,9 |
1,2816 |
0,89 |
1,2265 |
0,88 |
1,175 |
0,87 |
1,1264 |
0,86 |
1,0803 |
0,85 |
1,0364 |
0,84 |
0,9945 |
0,83 |
0,9542 |
0,82 |
0,9154 |
0,81 |
0,8779 |
0,8 |
0,8416 |
0,79 |
0,8064 |
0,78 |
0,7722 |
0,77 |
0,7388 |
0,76 |
0,7063 |
0,75 |
0,6745 |
0,74 |
0,6433 |
0,73 |
0,6128 |
0,72 |
0,5828 |
0,71 |
0,5534 |
0,7 |
0,5244 |
0,69 |
0,4959 |
0,68 |
0,4677 |
0,67 |
0,4399 |
0,66 |
0,4125 |
0,65 |
0,3853 |
0,64 |
0,3585 |
0,63 |
0,3319 |
0,62 |
0,3055 |
0,61 |
0,2793 |
0,6 |
0,2533 |
0,59 |
0,2275 |
0,58 |
0,2019 |
0,57 |
0,1764 |
0,56 |
0,151 |
0,55 |
0,1257 |
0,54 |
0,1004 |
0,53 |
0,0753 |
0,52 |
0,0502 |
0,51 |
0,0251 |
0,5 |
0 |
|
|
Ich habe nun eine Funktion geschrieben(u.a. mit Hilfe dieses Forums), die nach dem Wert q sucht und wenn diesen gefunden hat, den dazugehörigen Wert w zurückgibt. Bisher handelt meine Funktion, wenn sie den Wert nicht findet, so, dass sie den Wert auf die vorletzte Kommastelle rundet, und den Wert neu in die Funktion gibt. Leider habe ich nun bemerkt, das dadurch rundungsfehler enstehen (unschön). Nun möchte ich das abändern indem ich, wenn ich den exakten wert nicht finde, den nächstgelegen Wert von q ansteuere.
Kurzes Beispiel :
durch den anwender wurde das wertepaar q=0,957 und w =1,7209 eingefügt. sucht er nun aber nach dem wert q=0,956 wird, weil ich bis jetzt runde, der wert von q=0,96 (also w=1,7507) zurückgegeben, obwohl augenscheinlich q=0,957 wesentlich näher dran liegt.
Nun meine Frage: Gibt es eine Möglichkeit, in einer festgelegten Range (also spalte q) den nächgelegenen Wert zu suchen?
Ich hatte nun schon die Idee den Wert für q (mit einem belibigen wertpartner w) in die tabelle zu geben, nach q einzusortieren, anschließend nochmal nach q zu suchen und den oberen und unteren nachbar nach der differenz zu q zu prüfen und daraus den nächsten wert zu bestimmen. (anschließend natürlich wieder den wert für q und w rauslöschen.
Ich denke und hoffe aber, dass hier einige von euch schlauer sind als ich und mich auf den Weg einer eleganteren Lösung führen können.
Ich bedanke mich schonmal
Viele Grüße
Till
|