Avatar billede M_Pedersen Nybegynder
01. november 2012 - 09:10 Der er 1 kommentar og
1 løsning

Excel VBA: Loop af kolonner

Hej alle sammen

Jeg har to ark med følgende opbygning

Ark1: Liste med stillingsopslag hvor jeg gerne vil have udfyldt kolonne D og E med informationer fra ark2
 
Kolonne:    B    C            D        E
    Tæller    Stillings nr    Navn        AFD
    1    XX            blank        blank
    2    XXX            blank        blank
    Osv.

Kolonnen "tæller" er tiltænkt som at finde den rigtige kolonne (skal springe med 2 kolonner i ark2 men kan undlades. Stillings nr. er indtastet oplysninger, mens navn og afd ønskes udfyldt med informationer fra ark2

Ark2: indeholde flere kolonner med informationer omkring ansøgere samt hvilke(n) stilling vedkommen har søgt. Fra "kolonne  K" og resten af arket(afhængig af antallet af stillinger) har, hver stilling to kolonner. Den første som liste for ansøgere til pågældende stilling, og den anden med hvem der har fået stillingen(markeret med et 1-tal). Der kan være flere ens stillinger som er slået sammen i en kolonnen og derfor kan der godt være flere 1-taller i den anden kolonne(disse stillinger har så tilsvarende linie i ark1).

Jeg vil gerne lave en kode der med udgangspunkt i "tæller" kolonnen lave et loop i ark2 (kolonne x), hvor 1=kolonne L, 2=kolonne N, dvs. hver gang "tæller" stiger en så springer man to kolonner i ark2. Loopet skal i det/de tilfælde, hvor værdien = 1 returnere navn og AFD fra ark 2 (kolonne A og D) til ark 1 (kolonne D og E).

Håber at jeg har fået forklaret min problem stilling klart nok ellers, sig til.

Er der nogen der kan hjælpe?

På forhånd tak.
Avatar billede H_Klein Novice
01. november 2012 - 20:01 #1
Hejsa,

Har du mulighed for at sende arket eller lidt af det til mig, så skal jeg gerne kigge på det?

Med venlig hilsen

Henrik
Avatar billede H_Klein Novice
09. november 2012 - 20:21 #2
Som aftalt kommer her et svar og løsningen blev som vist herunder.

Option Explicit
Sub Job_skema()
   
    Dim Navn As String      'Ansøgers navn
   
    Dim ARK1 As String      'Ansøgerark
    Dim Ark2 As String      'opslåede stillinger
   
    Dim aRK As Long        'Rækkevariabel Ansøgerark
    Dim aKO As Long        'Kolonnevariabel Ansøgerark
    Dim AnSt_nr As String  'Stillingsnr Ansøgerark
   
    Dim oKO As Long        'Kolonnevariabel opslåede stillinger
    Dim oRK As Long        'Rækkevariabel opslåede stillinger
    Dim ST_nr As String    'Stillingsnr Opslåede stillinger

    Dim Status As String    'Ansøger eller Besat (Ansøgere_afdelingsopdeles)
    Dim Ma_nr As String
    Dim WRX As String
    Dim Nu_afd As String
    Dim Nu_stil As String
    Dim F_stil As String
    Dim Til_stil As String
    Dim Eft_stil As String
    Dim stil_sog As String
    Dim Ans_modt As String
    Dim Stil_nr As String
    Dim Stil_navn As String
   
    ARK1 = "Ansøgere_afdelingsopdeles"
    Ark2 = "Oversigt_opslåede_stillingsnr"
   
    oKO = 3
    aRK = 4
    oRK = 3
    oKO = 3
    Do
    Sheets(ARK1).Select
    Cells(aRK, 10).Select
    Selection.End(xlToRight).Select
    aKO = ActiveCell.Column
    If Cells(3, aKO) = "Ansøger" Then
    Cells(aRK, 10).Select
    aRK = aRK + 1
    Else
    aKO = aKO - 1
    Stil_nr = Cells(1, aKO)
    Stil_navn = Cells(2, aKO)
    Navn = Cells(aRK, 1)
    Ma_nr = Cells(aRK, 2)
    WRX = Cells(aRK, 3)
    Nu_afd = Cells(aRK, 4)
    Nu_stil = Cells(aRK, 5)
    F_stil = Cells(aRK, 6)
    Til_stil = Cells(aRK, 7)
    Eft_stil = Cells(aRK, 8)
    stil_sog = Cells(aRK, 9)
    Ans_modt = Cells(aRK, 10)

    Sheets(Ark2).Select
    Cells(1, 1).Select
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, 0).Select
    oRK = ActiveCell.Row
    Cells(oRK, 1) = Stil_nr
    Cells(oRK, 3) = Stil_navn
   
    Cells(oRK, 4) = Navn
    Cells(oRK, 5) = Nu_afd
    aRK = aRK + 1
    End If

    Sheets(ARK1).Select
    Loop Until Cells(aRK, 1) = ""
    Cells(4, 1).Select
   
    Sheets(Ark2).Select
    Cells(2, 1).Select
    Range("A2:F500").Sort Key1:=Range("A2"),    Order1:=xlAscending, Header:= _
        xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
   
    oRK = 3
    Do
    Cells(oRK, 2).Select
    ActiveCell.FormulaR1C1 = _
        "=IF(ISERROR(VLOOKUP(RC[-1],Stillingstyper!R2C1:R10C2,2,FALSE)),""Stillingsnr findes ikke!"",VLOOKUP(RC[-1],Stillingstyper!    R2C1:R10C2,2,FALSE))"
    oRK = oRK + 1
    Loop Until Cells(oRK, 1) = ""
    Cells(3, 1).Select
   
End Sub
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
Kurser inden for grundlæggende programmering

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