Avatar billede morlin Nybegynder
23. oktober 2007 - 20:54 Der er 3 kommentarer og
1 løsning

lopslag i to celler

Hejsa

jeg har gang i lopslag. I celle B1 står der =lopslag(Spar;ARK1!A:D;4;falsk. Men Spar står 2 eller flere gange i ark1. Hvordan får jeg excel til først at returnere den mindste værdi, og siden hen når jeg laver et nyt lopslag i celle B2 skal værdien være højere end den i B1. Feks står der ud for Spar i ark1 Morten2 og Morten3. Hvordan får jeg så Morten2 først og Morten3 sidst ... ??
Avatar billede kabbak Professor
23. oktober 2007 - 23:00 #1
Nu har jeg leget lidt med dit problem, det kan, så vidt jeg kan se ikke løses med de normale funktioner, så jeg har lavet en brugerdefineret.

Den virker næsten ligesom Lopslag, den behøver ikke at vide om data er sorteret.
Men til sidst skriver man hvilken plads, du vil have, Jeg har koplet en sorteringsfunktion på, den skal den bruge for at sortere data.

I min test ser kaldet sådan ud
=LopslagPlads(D1;$A$1:$B$3;2;F1)

Hvor der I D1 står "Spar" og i F1 står 1, for den første

den vil se sådan ud for den næste
=LopslagPlads(D1;$A$1:$B$3;2;F2), der står 2 iF2


Prøv at se om det kan bruges


Public Function LopslagPlads(Kriterie, Område As Range, Kolonne As Integer, Plads As Integer)
    Dim Res() As Variant, Data As Variant, X As Integer
    Data = Område
    X = -1
    For i = 1 To UBound(Data)
        If Data(i, 1) = Kriterie Then
            X = X + 1
            ReDim Preserve Res(X)
            Res(X) = Data(i, Kolonne)
        End If
    Next
Res = BubbleSortArray(Res)
    LopslagPlads = Res(Plads - 1)
End Function
Public Function BubbleSortArray(ByVal NumericArray As Variant) _
    As Variant

'RETURNS Array, or vbEmpty if there's an error
'e.g., passed array contains elements that
'can't be compared to each other, such as
'objects

'will work when elements are all numbers or single characters
'of the same case.

Dim vAns As Variant
Dim vTemp As Variant
Dim bSorted As Boolean
Dim lCtr As Long
Dim lCount As Long
Dim lStart As Long


vAns = NumericArray
 
If Not IsArray(vAns) Then
    BubbleSortArray = vbEmpty
    Exit Function
End If

On Error GoTo ErrorHandler

lStart = LBound(vAns)
lCount = UBound(vAns)

    bSorted = False
 
    Do While Not bSorted
      bSorted = True

      For lCtr = lCount - 1 To lStart Step -1
        If vAns(lCtr + 1) < vAns(lCtr) Then
          DoEvents
          bSorted = False
          vTemp = vAns(lCtr)
          vAns(lCtr) = vAns(lCtr + 1)
          vAns(lCtr + 1) = vTemp
        End If
      Next lCtr
     
    Loop
   
BubbleSortArray = vAns
Exit Function

ErrorHandler:
BubbleSortArray = vbEmpty
Exit Function
End Function
Avatar billede kedde65 Praktikant
24. oktober 2007 - 14:57 #2
Hejsa

Jeg har lavet et eksempel til dig på http://www.officekonsulenterne.dk/download.asp den øverste laver en dynamisk Vlookup/sortering af alle dem der findes med spar. Dog er denne løsning kun god, hvis man er sikker på at alle værdierne i opslags tabellen er unikke.

Bemærk at grund til farverne, er at de er forskellige opbygget formler i de to blokke af opslagsfunktioner.

Du er velkommen til at spørge yderligere, hvis du har behov!

/Christian
ck@officekonsulenterne.dk
Avatar billede luffeladefoged Praktikant
24. oktober 2007 - 15:28 #3
Det kan godt jeg er helt ude i skoven på denne her, men kunne du ikke blot lave en unik sortering på dine navne, så du havde Morten2, Morten3, etc., og så lave en lookup til disse navne, så der stod spar ud for Morten2 og Morten3 - ville det ikke give det samme resultat i sidste ende?

Hilsen  Luffe
Avatar billede excelent Ekspert
03. november 2007 - 22:59 #4
....A.........B....
.1] Carsten.......8
.2] Bent..........2
.3] Villy.........2
.4] Carsten.......7
.5] Arne..........2
.6] Jens..........2
.7] Henning.......2
.8] Carsten.......3
.9] Bent..........2
10]
11] Carsten

Indsæt i A13 =INDEKS($A$1:$A$9;SAMMENLIGN(MINDSTE(HVIS($A$1:$A$9=$A$11;$B$1:$B$9);RÆKKE(1:1));$B$1:$B$9;0))
Indsæt i B13 =MINDSTE(HVIS($A$1:$A$9=$A$11;$B$1:$B$9);RÆKKE(1:1))

Afslut begge formler med CTRL+SHIFT+ENTER og kopier ned
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