02. august 2007 - 00:25Der er
6 kommentarer og 2 løsninger
Matrix opslag
Hey
For nogle år siden fik jeg hjælp til understående funktion:
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
Det var bak som lavede den til mig, nu vil jeg høre om nogen kan hjælpe med at omskrive den sådan at opslaget kan laves på tekst, sådan at der ledes efter en tekst.
Ovenstående funktion returnerer nærmeste større - det skal den naturligvis ikke da det jo er tekst...
-så kort og godt i celle a1 står der tekst1 og i celle a2 står der tekst2 nu skal jeg så finde værdien i skæringspunktet:
Function MatrixOpslag(Area As Range, Horisontal As Variant, Vertikal As Variant) Dim i As Long, x As Long, y As Long Set Area = Area For i = 1 To Area.Rows.Count If Area(i, 1) = Horisontal Then x = i End If Next For i = 1 To Area.Columns.Count If Area(1, i) = Vertikal Then y = i End If Next SpecialOpslag = Area(x, y) End Function
En anden (mulig?) løsning - kan være tung at vedligeholde, men kan være praktisk i mange tilfælde hvor et navn giver mere mening end en cellereference: Name column B tekst1, col C tekst3, etc. Row2 navngives tekst2, row3 tekst4, etc. Herefter vil formlen "+tekst1 tekst2" give resultatet 2000. Rækkefølgen er ligegyldig, der skal blot være et mellemrum i formlen mellem de navneangivelser.
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.