15. november 2002 - 22:51Der er
15 kommentarer og 1 løsning
Opslag i forskellige tabeller/matrixer
Hello...
Bak har lige lavet/givet mig følgende funktion:
Function pris(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 pris = Area(x, y) End Function
Og den fungerer fint.. med den kan jeg indsætte en funktion i en celle og pege på et area... men, hvis jeg nu ønsker at area skal ændre sig ud fra et spørgsmål f.eks.
if A2="X" then area = WORKBOOK Pris for vinduer if A3="X" then area = woorkbook pris for dører...
Jeg forestille mig, at der er fordi du gerne vil kopiere den f.eks. nedad uden hensyn til, om det er døre eller vinduer der skal checkes på - right !
Function Pris(WinArea As Range, DoorArea As Range, Højde As Double, Bred As Double, bWindow As Boolean) Dim Area As Range Dim dif As Double Dim i As Long, x As Long, y As Long, p As Integer dif = 100000
If bWindow Then Set Area = WinArea Else Set Area = DoorArea End If
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 pris = Area(x, y) End Function
Det virker således: =Pris(WinArea;DoorArea;Højde;Bred;HVIS(A2="X";True;False))
Hvis "hvis-funktionen" returnerer True - så køres WinArea eller køres DoorAera
UPS..... hvis du bruger denne funktion og ikke den nye model ( se point til bak) skal du i begge løkker ændre for i = 1 til for i = 2 Dettte vil nemlig give forkert opslag, hvis en af de værdi du vil slå op er mindre end det den skal føre efter. (den vil så returere en overskrift).
Hvis du har navngivet dine områder Vinduer og Døre, kunne du også indsætte det her i en celle. fks a5 =HVIS(A2="x";"Vinduer";"Døre") og din formel ville så være =PRIS(INDIREKTE(A5),H1;b1)
afhængig af resultatet i A5 vil formlen skifte dataområde Du skal så ikke ændre i din funktion.
>> flemming... egentlig er det fordi jeg har flere forskellige prislister... jeg ønsker at køberen vælger et produkt på en liste og angiver højde x bredde
Funktionen skal så slå op i den rigtige prisliste afhængig af produkt...
jeg har ikke kigget på dit forslag måske dækker det mit ønske?
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.