Programere funktion i Visual Basic
Hej Eksperten.dkJeg har et lille programeringsproblem, som jeg meget gerne vil have hjælp til. Jeg ønsker at programere en funktion, som har nogle søgekriterier i sig.
Jeg vil give dig et eksempel på mit problem:
X/Y 230 220 200 180 160 140
90 13649 13612 13465 13122 12639 11440
80 13084 13007 12853 12492 11983 10615
70 11816 11756 11411 11240 10524 9101
60 9633 9581 9397 9101 8506 7264
50 7269 7268 7123 6890 6382 5470
40 4903 4838 4778 4584 4286 3583
30 3088 3065 2987 2833 2531 2043
20 1419 1405 1359 1275 1113 862
10 468 455 448 402 341 290
0 213 213 197 183 161 134
Her har du mine dataer.
X= {90,80,70,60.....0}
Y= {230,220,200...140}
Z= {alle værdier fra 13649 til 134}
Nu ville jeg gerne, at jeg kunne søge på en Z værdi, og computeren retunere den højeste X værdi og den Y værdi, der passer til X værdien, til mig. MEN X må ALDRIG overstige 90 eller gå under 0, og Y må SKAL være mellem 140 og 230.
Hvis jeg f.eks. skriver Z= 13649, så skulle computeren gerne retunere 90, 230 til mig, da det jo er den højeste X værdi ved det givne Z punkt. Dette er simpelt, da jeg jo kender X og Y værdierne til 13649, men hvis jeg f.eks skriver 10000, kender jeg jo ikke den højeste X værdi og Y værdien til denne. Y værdien skal ikke være den højeste - den skal bare være mellem 140 og 230.
Jeg har en søge-interpolerings-funktion i Excel, men når jeg bruger den, finder computeren værdier, der ligger over 90 og 230 og det er det jeg søger efter. En funktion, der kan begrænse søgningen, så den ikke overskrider mine grænser.
Samtidig skal programmet også kunne finde ud af
følgende:
Når ovenstående program/funktion har fundet den højeste X værdi (mellem 0 og 90) til et givet punkt Z punkt og den Y værdi, der passer til x værdien (mellem 140 og 230), skal programmet nu kigge i nedenstående tabel:
Y/X
0 10 20 30 40 50 60 70 80 90
230 11,5 9,3 9,4 9,9 11,1 12,0 9,3 8,8 8,0 7,6
220 13,3 8,1 10,0 9,7 11,1 11,6 10,0 8,7 8,6 8,8
200 10,3 13,9 9,9 11,0 12,4 12,3 10,4 8,8 9,3 9,8
180 12,7 19,2 12,5 12,8 13,1 13,5 12,5 11,4 9,9 11,2
160 20,9 48,9 17,7 16,7 18,1 15,9 17,9 15,4 14,0 14,2
140 37,5 38,6 27,2 26,2 29,0 24,7 25,0 25,6 27,4 33,8
X= {90,80,70,60.....0}
Y= {230,220,200...140}
Z= {resten af værdierne)
Her må de fundne X/Y værdier ALDRIG overskride 23.
DVS:
Hvis jeg f.eks i funktion 1 indtaster følgende Z værdi (jeg tager én jeg kender punkterne til): 13649
Skal programmet retunere følgende X værdi til mig: 90
Og følgende Y værdi: 230
Derefter skal programmet gå ind i tabllen nederst og checke 90, 230. I dette tilfælde er det 7,6, så den kan godt bruges.
Havde Z punktet i den nederste tabel været f.eks 25,3 ved et givet X/Y punkt, kunne den ikke bruges.
I tilfælde hvor det nederste Z punkt er over 23, skal programmet selv finde den højeste X værdi (i øverste tabel), der ligger på eller under 23, så den hele tiden finder den næsthøjeste X værdi, indtil den passer i nederste tabel, hvor X/Y punktet skal være under 23.
Dette ser lidt indviklet ud, men jeg håber meget I kan hjælpe mig (kan I ikke hjælpe mig, håber jeg I har en adresse, man kan henvende sig til sig for yderligere hjælp).
Venlig hilsen
Morten Bro Pedersen