Avatar billede Tomti Nybegynder
09. maj 2009 - 01:02 Der er 1 kommentar og
1 løsning

Kopiere værdier fra valgte celler i ark 1 til 12 ud fra værdi i celle på værdi ark

Hejsa eksperter!

Nu har jeg læst og klippet og klistret i 5 uger, og det vil bare ikke lykkes.

Det jeg gerne vil have hjælp til er en makro.
Jeg bruger Excel 2007 på en maskine med vista.

Regnearket er på 36 ark
Ark 1 til 12 er navngivet "Jan, Feb, Mar" osv. "kun 3 bogstaver"
Ark 36 er navngivet "Værdi"

Ark 36: værdi
Kolonne B række 2 står dags dato
Kolonne B række 4 står datoen 1-1-09
Kolonne B række 5 til 369 er formelbaseret således at datoerne kun fremkommer når dags dato oprunder.

Ark 1 til 12: Jan, Feb, Mar osv.
Kolonne B række 4 dato for første dag i md., efterfølgende datoer for md. står nedefter i kolonne B. Slut rækken variere da md. ikke er lige lange, Jan er række 34, Feb 31, Mar 34, Apr 33 osv.

Makroen skal tage værdi/dato "søgekriteria" i kolonne B på ark 36 "værdi arket" søge efter tilsvarende værdi/dato i kolonne B på ark 1 til 12, når den finder en match skal den kopiere værdierne fra cellerne "G, I, K, N, Q, T, W, Z" i samme række som match er fundet "også tomme celler" og paste til kolonne C, D, E i samme række på "værdi arket" som søgekriteria er taget fra altså G til C, I til D, K til E osv. det skal kun være værdierne og ikke formlerne der skal kopieres, format og celle brede skal være det samme.
Næste celle i kolonne B på "værdi arket" køre søgning og kopiering igen

Når der ikke er flere datoer i kolonne B på "værdi arket" skal makroen stoppe.

Makroen skal starte forfra hvergang den køres.

hvis jeg ikke har gjort mig forstålig nok så spørg.

Jeg håber nogen kan hjælpe mig.
Avatar billede Tomti Nybegynder
10. maj 2009 - 04:29 #1
Har selv fundet en løsning

[code]
Sub CopyDataToVaerdi()

    Set I = Sheets
    Dim LDate As Variant
    Dim LColumn As Integer
    Dim LFound As Boolean
    Dim n
    Dim j

    n = 4
   
    Application.ScreenUpdating = False
   
   
        For d = 1 To 12 'Arbejder sig igennem Ark 1 til 12
   
    j = 4
    r = 4
   
            Sheets(d).Activate 'Aktivere Arket
       
       
                While Cells(r, 2) > 0 'Finder sidste celle i kolonne B med værdi
                    r = r + 1
                Wend
                    Cells(r - 1, 2).Select
                    Range(ActiveCell, ActiveCell.End(xlUp)).Select 'Markere celler i kolonne B med værdi
               
            For Each Cell In Selection 'For hver celle i markering
           
                LDate = Sheets("Værdi").Range("B" & n).Value 'Henter dato værdi der skal søges efter
               
                Cells(j, "G").Select
               
                Sheets(d).Select
               
                LColumn = 2 'Vælger kolonne B
                LFound = False
               
                    While LFound = False
                   
                        If Len(Cells(j, LColumn)) = 0 Then 'Når ingen matgh er fundet stoppes makroen
                            Cells(j, "G").Select
                        Exit Sub
                       
                       
                        ElseIf Cells(j, LColumn) = LDate Then 'Fundet match i række
                            Sheets(d).Select 'Vælger værdier til kopiering fra "Måneds" Ark
                            Range("G" & j & ":AB" & j).Copy
                            Sheets("Værdi").Select            'Sætter ind på "Værdi" Ark
                            Cells(n, LColumn + 1).Select
                            Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
                        xlNone, SkipBlanks:=False, Transpose:=False
                            Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
                        SkipBlanks:=False, Transpose:=False
                            Application.CutCopyMode = False
                            LFound = True
                        Else            'Fortsæt Søgning
                            LColumn = LColumn + 1
                        End If
                       
                    Wend
               
                n = n + 1
                j = j + 1
            Next
        Next d
   
    Exit Sub
   
    Application.ScreenUpdating = True
   
End Sub

[/code]
Avatar billede Tomti Nybegynder
10. maj 2009 - 04:45 #2
Jeg kan godt se at der er nogle underlige tegn imellem, så jeg prøver igen

Sub CopyDataToVaerdi()

    Set I = Sheets
    Dim LDate As Variant
    Dim LColumn As Integer
    Dim LFound As Boolean
    Dim n
    Dim j

    n = 4
   
    Application.ScreenUpdating = False
   
   
        For d = 1 To 12 'Arbejder sig igennem Ark 1 til 12
   
    j = 4
    r = 4
   
            Sheets(d).Activate 'Aktivere Arket
       
       
                While Cells(r, 2) > 0 'Finder sidste celle i kolonne B med værdi
                    r = r + 1
                Wend
                    Cells(r - 1, 2).Select
                    Range(ActiveCell, ActiveCell.End(xlUp)).Select 'Markere celler i kolonne B med værdi
               
            For Each Cell In Selection 'For hver celle i markering
           
                LDate = Sheets("Værdi").Range("B" & n).Value 'Henter dato værdi der skal søges efter
               
                Cells(j, "G").Select
               
                Sheets(d).Select
               
                LColumn = 2 'Vælger kolonne B
                LFound = False
               
                    While LFound = False
                   
                        If Len(Cells(j, LColumn)) = 0 Then 'Når ingen matgh er fundet stoppes makroen
                            Cells(j, "G").Select
                        Exit Sub
                       
                       
                        ElseIf Cells(j, LColumn) = LDate Then 'Fundet match i række
                            Sheets(d).Select 'Vælger værdier til kopiering fra "Måneds" Ark
                            Range("G" & j & ":AB" & j).Copy
                            Sheets("Værdi").Select            'Sætter ind på "Værdi" Ark
                            Cells(n, LColumn + 1).Select
                            Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
                        xlNone, SkipBlanks:=False, Transpose:=False
                            Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
                        SkipBlanks:=False, Transpose:=False
                            Application.CutCopyMode = False
                            LFound = True
                        Else            'Fortsæt Søgning
                            LColumn = LColumn + 1
                        End If
                       
                    Wend
               
                n = n + 1
                j = j + 1
            Next
        Next d
   
    Exit Sub
   
    Application.ScreenUpdating = True
   
End Sub

Det ser bedre ud
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