Avatar billede Morten Nybegynder
15. november 2002 - 14:45 Der er 15 kommentarer og
1 løsning

Opslag

Hej

Nu har jeg siddet og futtet rundt i alle spørgsmål vedr. opslag i Excel men har ikke fundet en løsning jeg kan bruge.

Jeg har nogle prislister hvor priserne fremkommer udfra en højde x bredde kunne være:

A1:E1 indeholder bredder
A2:A5 indeholder højder

Jeg ønsker nu en funktion der kan slå prisen op udfra bredde x højde... og hvis bredden/højden ikke findes skal den tage den nærmeste STØRRE bredde/højde

Problemet med Index(sammenlign) er at listen skal være sorteret faldende for at dette fungerer og det kan ikke lade sig gøre i dette tilfælde....

Det må meget gerne være en VBA funktion...

Håber at problemstilling er forklaret godt nok
15. november 2002 - 14:48 #1
Det ligner det der hedder interpolering
Avatar billede Morten Nybegynder
15. november 2002 - 14:50 #2
Hmmm... B1:E1 indeholder bredder... er nok mere rigtigt.... al´a

  B1  C1  D1  E1  F1
A2 100  200  300  400  500
A3 600  700  900  120  360
A4 250  350  450  130  450
A5 300  500  600  700  900
A6 800  600  500  333  555
Avatar billede Morten Nybegynder
15. november 2002 - 14:52 #3
>Flemmingdahl

kan du forklare lidt nærmere...?
Avatar billede jakobclausen Nybegynder
15. november 2002 - 14:53 #4
Du skal bruge funktionen "Lopslag" du kan slå den op i hjælp
Avatar billede Morten Nybegynder
15. november 2002 - 14:54 #5
lopslag funger ikke - den kan kun slå en værdie op...
Avatar billede Morten Nybegynder
15. november 2002 - 14:55 #6
jakob - de point fik du ved en stor fejl... dit svar er ikke accepteret... må nok oprette et nyt.... eller du kan måske gi' mig dem retur..?
Avatar billede jakobclausen Nybegynder
15. november 2002 - 15:01 #7
cddk: Jamen er det ikke også prisen du skal slå op, det er da en værdi.

Nå det mener du alligevel, det må jeg så se om jeg kan finde ud af
Avatar billede jakobclausen Nybegynder
15. november 2002 - 15:03 #8
http://www.eksperten.dk/spm/283697

Men du skal tænke på at der er lidt omkostnings gebyr :-)
Avatar billede bak Forsker
15. november 2002 - 16:08 #9
'test lige denne funktion af.
'bruges sådan
'=SpecialOpslag(hele området, Højden (nedad), bredden (henad))


Function SpecialOpslag(Area As Range, Højde As Double, Bred As Double)
  Dim dif As Double
  Dim i As Long, x As Long, y As Long, p As Integer
  dif = 100000
  Set Area = Area
  For i = 1 To Area.Rows.Count
    If Area(i, 1) >= Højde And Area(i, 1) - Højde < dif Then
    dif = Area(i, 1) - Højde
    x = i
    End If
  Next
  dif = 100000
  For i = 1 To Area.Columns.Count
    If Area(1, i) >= Bred And Area(1, i) - Bred < dif Then
    dif = Area(1, i) - Bred
    y = i
    End If
  Next
  SpecialOpslag = Area(x, y)
End Function
Avatar billede Morten Nybegynder
15. november 2002 - 16:22 #10
Hej Bak
Kan ikke teste lige nu - men kan du måske forklare hvad de enkelte linier bør gør - bare så jeg forstår koden - er endnu ikke en haj til VB...
Avatar billede bak Forsker
15. november 2002 - 16:46 #11
Function SpecialOpslag(Area As Range, Højde As Double, Bred As Double)
  Dim dif As Double
  Dim i As Long, x As Long, y As Long
  dif = 100000    ' sætter en stor difference
  For i = 1 To Area.Rows.Count  'kører gennem alle celler i højre side
    'Leder i disse celler efter den mindste værdi der er større end
    'eller lig med højden
    If Area(i, 1) >= Højde And Area(i, 1) - Højde < dif Then
    dif = Area(i, 1) - Højde
    ' x angiver en rækken på en celle der opfylder betingelserne
    x = i
    End If
  Next
 
  dif = 100000
  'Kører gennem alle cellerne i øverste række
  For i = 1 To Area.Columns.Count
    'Leder i disse celler efter den mindste værdi der er større end
    'eller lig med bredden
    If Area(1, i) >= Bred And Area(1, i) - Bred < dif Then
    dif = Area(1, i) - Bred
    'y angiver kolonnen på en celle der opfylser betingelserne
    y = i  '
    End If
  Next
  ' værdi ud for række x og kolonne y returneres
  SpecialOpslag = Area(x, y)
End Function
Avatar billede jakobclausen Nybegynder
15. november 2002 - 17:21 #12
cddk: Vil du have alle pointene tilbage?
Avatar billede Morten Nybegynder
15. november 2002 - 19:01 #13
Hmmmmm... bak... bliver lige lidt besværlig.. hva' hvis det nu ikke lige er række 1 og/eller den første kolonne..??

hmmm... skal have testet det i løbet af weekenden...

>>> Jakob.. jada... dit svar var jo ikke til noget :O)
Avatar billede bak Forsker
15. november 2002 - 20:21 #14
Det er fuldstændig ligegyldigt. Det er første kolonne og række i det område du sætter ind, den går efter.

=SpecialOpslag(h10:m16; h1; b1) er ok, hvis dit dataområde er H10:M16 og højden står i h1 og bredden står i b1
Avatar billede Morten Nybegynder
15. november 2002 - 22:15 #15
Hey Bak

Det virker lige umiddelbart... det vil jeg godt gi 200 point for...
Jeg smider lige et spørgsmål så du kan få dine velfortjente point....!!!!

YES.....
Avatar billede Morten Nybegynder
15. november 2002 - 22:17 #16
pointene venter i sprg.283860
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester