Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

interpoleren

83 views
Skip to first unread message

Rene

unread,
Sep 24, 2001, 11:00:36 AM9/24/01
to
Weet iemand het volgende. Ik wil in een bestand kunnen
interpoleren vb:
leeftijd prijs
45 ƒ 10
46 ƒ 15

Met verticaal zoeken leeftijd 45,5 moet als resultaat
geven ƒ 12,5.

Wie weet hoe dit moet of kan.

Alvast bedankt
René

W. de Groot

unread,
Sep 24, 2001, 11:28:33 AM9/24/01
to
Hoi Rene,
Stel, je hebt in A2 45 gezet en in A3 46, in B2 staat 10 en in B3 15. De
waarde die je zoekt is 45,5 en staat in C2. Dan is de
formule=VOORSPELLEN(C2;B2:B3;A2:A3) Dus voorop staat de cel met de waarde
die je zoekt en daarnaast de beide gebieden met de gegevens.
Groet, Wim

"Rene" <re...@nieboer.net> schreef in bericht
news:070901c14509$aa76f730$b1e62ecf@tkmsftngxa04...

rene

unread,
Sep 24, 2001, 3:14:09 PM9/24/01
to
Bedankt Wim,

Maar als de lijst nu langer is. vb in A1 staat ook nog 44
en in B2 8. Hij moet dan automatisch de gegeven waarde
45,5 (in c2) vinden in de lijst (bijv met vlookup) en
vervolgens de waarde voorspellen. Ik kom er niet uit. Weet
jij dit soms ook?

Alvast bedankt

Rene


>-----Oorspronkelijk bericht-----

>.
>

Niek Otten

unread,
Sep 24, 2001, 3:40:41 PM9/24/01
to
Hi Rene,

Hier een VBA functie van Bill Koran

Groeten,

Niek Otten
=====================
Function InterpolateVLOOKUP(X As Double, Table As Range, _
YCol As Long) As Variant

Dim TableRow As Long
Dim x0 As Double, x1 As Double
Dim y0 As Double, y1 As Double

On Error GoTo ErrorFound
'type-mismatch error triggered if X smaller than Table(1, 1)
TableRow = Application.Match(X, Table.Columns(1), 1)

'subsequent assignment lines and calculations will trigger
'type-mismatch errors if table contains text at TableRow or TableRow + 1

x0 = Table(TableRow, 1)
y0 = Table(TableRow, YCol)

If x0 = X Then
'exact match on last X-value in the table is OK
InterpolateVLOOKUP = y0
ElseIf TableRow = Table.Rows.Count Then
'if the match is on the last row of the table,
'there's no TableRow + 1, and we can't interpolate
Err.Raise 13
Else
x1 = Table(TableRow + 1, 1)
y1 = Table(TableRow + 1, YCol)
InterpolateVLOOKUP = (X - x0) / (x1 - x0) * (y1 - y0) + y0
End If
Exit Function

ErrorFound:
InterpolateVLOOKUP = CVErr(xlErrNum)
End Function 'InterpolateVLOOKUP
=============================================
"Rene" <re...@nieboer.net> wrote in message
news:070901c14509$aa76f730$b1e62ecf@tkmsftngxa04...

W. de Groot

unread,
Sep 25, 2001, 10:23:29 AM9/25/01
to
Hoi Rene,
OK, ik ga van dezelfde tabel uit. In C2 zet ik =VERT.ZOEKEN(C1;A:B;1;1) die
haalt uit de kolommen A en B de waarde die het dichtst onder 45,5 ligt. In
C3
zet je het verschil =C1-C2 is dus 0,5. In D2 zet je
=VERT.ZOEKEN(C1;A:B;2;1)die
kijkt wat er naast 45 staat (is 10) en in D3 =VERT.ZOEKEN(C1+1;A:B;2;1) die
opzoekt wat er staat naast het getal dat het dichtst onder 45,5+1 ligt (is
15;
ik neem aan dat de serie 44, 45, 46 met 1 bljft oplopen). D1 geeft de
uitkomst
met =(D3-D2)*C3+D2. Wil je deze stappen echt in 1 formule, dan is dat
=(VERT.
ZOEKEN(C1+1;A:B;2;1)-VERT.ZOEKEN(C1;A:B;2;1))*(C1-VERT.ZOEKEN(C1;A:B;1;1))+V
ERT.
ZOEKEN(C1;A:B;2;1) . Die kun je gewoon uit dit bericht kopieren en in je
Excelblad plakken.
Groet, Wim

"rene" <re...@nieboer.net> schreef in bericht
news:317601c1452d$16477070$9ae62ecf@tkmsftngxa02...

0 new messages