Avatar billede ExcelNovice Juniormester
31. marts 2011 - 16:09 Der er 12 kommentarer

Select case, if ... then - eller noget helt 3.?

Løntrin    Basisløn
2    0
8    0
4    0
S    0
C    0

Jeg har brug for at kunne udfylde felterne i kolonnen 'Basisløn' med tal, udfra hvilket løntrin der er anført i kolonnen 'løntrin'.  Tallene hentes fra et dataark i samme excelmappe.

Nogen idéer?
Avatar billede ae03 Novice
31. marts 2011 - 16:22 #1
=LOPSLAG(A5; 'Ark2'!A$2:B$6; 2)
Avatar billede ae03 Novice
31. marts 2011 - 16:28 #2
lopslag er baseret på, at listen med løntrin i Ark2 står i kolonne A og beløbet i kolonne B. Står de i rækker, bruges vopslag.
Du skal måske overveje at bruge forment
=LOPSLAG(A5; 'Ark2'!A$2:B$6; 2; sand)
Så får du kun en værdi retur, hvis opslagsværdien matcher præcist.

Vh Lars
Avatar billede ae03 Novice
31. marts 2011 - 16:29 #3
Sludder. Det skal være 'Falsk', ikke 'Sand'
Avatar billede ExcelNovice Juniormester
31. marts 2011 - 17:10 #4
Ah ja, problemet er at jeg skal kunne sikre at beregningen er i kolonnen uden at skulle kopiere den ned når der lægges nye linier ind. Det er nødvendigt at kunne kode det så jeg kan køre det som en makro.
Avatar billede ae03 Novice
01. april 2011 - 10:07 #5
Makroer er jeg ikke nogen ørn til, så der skal der nogle andre på banen. Min simple løsning, som godt nok i længden kan gøre arket lidt tungt, ville være denne:

=hvis(er.tom(A5); ""; LOPSLAG(A5; 'Ark2'!A$2:B$6; 2; falsk)

Den sikrer i hvert fald, at der ikke kommer til at stå en masse nuller i kolonnen. Men held og lykke med at få en makro-løsning. Jeg afventer den med interesse, da jeg nok også selv vil kunne have gavn af den.
Avatar billede ExcelNovice Juniormester
01. april 2011 - 15:23 #6
Men den løsning vil jo fylde en celle med en formel, hvor der faktisk skal være en anden formel, så den holder nok heller ikke...  Det er VBA koden jeg er ude efter.
Avatar billede anlu Nybegynder
05. april 2011 - 21:54 #7
Har du fået løst dit problem?

Ellers er en mulighed at bruge Find-funktionen på range-objektet til at finde den celle der indeholder det søgte løntrin i dit dataark, og så kombinere med Offset-funktionen til at finde basislønnen.

Jeg vil ikke lige nu bruge tid på at lave et konkret eksempel, da det jo er noget tid siden spørgsmålet er lagt, så det meget vel kan tænkes at du har fået det løst siden. Hvis det stadig er aktuelt, skal jeg gerne skrive et mere konkret eksempel.
Avatar billede ExcelNovice Juniormester
05. april 2011 - 21:56 #8
Jeg har ikke fået løst problemet og vil meget gerne høre dit forslag!
Avatar billede anlu Nybegynder
05. april 2011 - 22:21 #9
Kan denne hjælpe? - skal selvf.tilpasses til hvor du har dine data:

Public Function LookUp(lookupVal As Variant) As Variant
    Dim foundCell As Range
    Dim lookupRange As Range
    Set lookupRange = Worksheets("Sheet1").Range("A1:A5")
    Set foundCell = lookupRange.Find(lookupVal, LookIn:=xlValues, lookat:=xlWhole)
    If Not foundCell Is Nothing Then
        LookUp = foundCell.Offset(0, 1).Value ' her antages at den søgte værdi står 1 kolonne til højre for lookup-værdien
    End If
End Function

Jeg antager at du har dine løntrin til at stå samlet i en eller anden kolonne (her "A1:A5") i et givet ark (her "Sheet1") og at den tilhørende basisløn står på samme række i en anden kolonne (her 1 kolonne til højre for løntrinnet, dvs. kolonne B, hvis løntrin er i kolonne A).
Avatar billede ExcelNovice Juniormester
06. april 2011 - 21:18 #10
Tak :-)  Jeg kan godt se sammenhængen, men jeg mangler noget i koden der angiver i hvilken kolonne der skal ledes efter løntrinnet. Jeg tænker at koden ellers vil udskifte samtlige tal og bogstaver der har sammenfald med løntrin i det oprindelige ark med en lønsum. (løntrinnene er 1, 2, 4, 5, 6, 7, 8, S og C).
Avatar billede ExcelNovice Juniormester
06. april 2011 - 21:22 #11
Og en kode der angiver hvilken kolonne tallet - lønsummen - skal stå i.
Avatar billede anlu Nybegynder
07. april 2011 - 11:14 #12
Ah.. ok, jeg troede bare det var lookup-funktionen du skulle have input til.

Samlet kode, som du kan lægge i et modul. Lookup-funktionen skal tilpasses som før nævnt. FillValues som er hovedrutinen du skal køre skal tilpasses som nævnt med kommentarer.


Public Sub FillValues()

    Dim kodeCol As Integer
    Dim loensumCol As Integer
   
    Dim row As Integer
    Dim startrow As Integer
    Dim stopBlankRows As Integer
    Dim numBlankRows As Integer
    Dim ws As Worksheet
   
   
    ''' Ret nedenstående 5 linjer så de passer
    kodeCol = 1 ' Den kolonne hvor koden for løntrin findes - 1=kolonne A
    loensumCol = 2 ' Den kolonne hvor den tilhørende lønsum skal skrives - 2=kolonne B
    startrow = 2
    stopBlankRows = 1 ' stop når der er så mange blanke celler i træk i kode-kolonnen. hvis der ingen huller er, så den skal stoppe ved første tomme celle, så skal der stå 1
    Set ws = Worksheets("Sheet2") ' Udskift Sheet2 med ark-navn
   
    row = startrow
    numBlankRows = 0
   
    Do While numBlankRows < stopBlankRows
        If ws.Cells(row, kodeCol).Value = "" Then
            numBlankRows = numBlankRows + 1
        Else
            ws.Cells(row, loensumCol).Value = LookUp(ws.Cells(row, kodeCol).Value)
            numBlankRows = 0
        End If
        row = row + 1
    Loop

End Sub


Public Function LookUp(lookupVal As Variant) As Variant
    Dim foundCell As Range
    Dim lookupRange As Range
    Set lookupRange = Worksheets("Sheet1").Range("A1:A5")
    Set foundCell = lookupRange.Find(lookupVal, LookIn:=xlValues, lookat:=xlWhole)
    If Not foundCell Is Nothing Then
        LookUp = foundCell.Offset(0, 1).Value ' her antages at den søgte værdi står 1 kolonne til højre for lookup-værdien
    End If
End Function
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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