Avatar billede mfynbo Juniormester
01. juni 2011 - 09:27 Der er 14 kommentarer og
1 løsning

Hvordan lægger jeg varierende dataområder fra forskellige sheets under hinanden automatisk?

Hej Eksperter,
Jeg har 4 ark med 7 kolonner, men med varierende længde fra mdr til mdr.
Disse 4 arks områder samler jeg under hinanden hver mdr. manuelt.
Er der en måde, hvorpå jeg kan gøre dette automatisk. Mit problem er, at de 4 ark varierer i længde, men dog ikke i antal kolonner.

Mvh.
Mfynbo
Avatar billede supertekst Ekspert
01. juni 2011 - 09:31 #1
En VBA-kode skulle nok kunne klare det.

Hvor samles de 4 ark?
Har arkene særlige navne?
Avatar billede mfynbo Juniormester
01. juni 2011 - 09:40 #2
De samles faktisk bare i et 5. ark, som hedder total i samme workbook.
Avatar billede mfynbo Juniormester
01. juni 2011 - 09:53 #3
Arkene hedder US, FR, CA, JP og KR. De starter alle med overskriver i række 1 og efterfølgende data i række 2 og ned. Samme overskriver går så igen i total arket og med data fra række 2.
Avatar billede supertekst Ekspert
01. juni 2011 - 10:15 #4
KR er altså Total-arket?
Avatar billede mfynbo Juniormester
01. juni 2011 - 10:57 #5
Nej det står for korea. Total arket hedder "total".
Avatar billede mfynbo Juniormester
01. juni 2011 - 10:58 #6
Ja ok, der er 5 ark i alt. Beklager forvirringen.
Avatar billede supertekst Ekspert
01. juni 2011 - 11:06 #7
ok - løsningen er på vej
Avatar billede supertekst Ekspert
01. juni 2011 - 11:09 #8
Rem Koden anbringes under fanen for total
Rem Kan aktiveres via Alt+F8
Rem =====================================
Public Sub samlingAfArk()
Const totalArkNavn = "total"
Dim totalArk As Worksheet

Dim antalræk As Long, ræk As Long, rækTotal As Long
Dim ark As Worksheet

    Set totalArk = ActiveWorkbook.Sheets(totalArkNavn)
    rækTotal = 2
   
    Application.ScreenUpdating = False
   
Rem traverser ark
    For Each ark In ActiveWorkbook.Sheets
        ark.Activate
        If LCase(ark.Name) <> LCase(totalArkNavn) Then
            antalræk = beregnAntalRækker
           
            If antalræk > 1 Then
                ActiveSheet.Range("A2:G" & CStr(antalræk)).Select
                Selection.Copy
               
                With totalArk
                    .Activate
                    .Range("A" & CStr(rækTotal)).Select
                    ActiveSheet.Paste
                    rækTotal = rækTotal + antalræk - 1
                End With
            End If
        End If
    Next
   
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
   
    MsgBox "Samling af ark afsluttet"
   
    totalArk.Activate
    Range("A1").Select
   
End Sub
Private Function beregnAntalRækker()
    beregnAntalRækker = ActiveCell.SpecialCells(xlLastCell).Row
End Function
Avatar billede mfynbo Juniormester
01. juni 2011 - 11:21 #9
Hej, mange tak for tilsendte. En lille detalje. Der er flere ark i workbooken, som ikke skal med. Det gør de pt.
Kan macroen specificeres til kun at vælge arkene US, JP, KR, CA, og FR?
Avatar billede supertekst Ekspert
01. juni 2011 - 11:37 #10
Ja - version 2 er på vej....
Avatar billede supertekst Ekspert
01. juni 2011 - 11:48 #11
Rem Version 2
Rem Koden anbringes under fanen for total
Rem Kan aktiveres via Alt+F8
Rem =====================================
Public Sub samlingAfArk()
Const relevanteArk = "US FR CA JP KR"
Const totalArkNavn = "total"
Dim totalArk As Worksheet

Dim antalræk As Long, ræk As Long, rækTotal As Long
Dim ark As Worksheet

    Set totalArk = ActiveWorkbook.Sheets(totalArkNavn)
    rækTotal = 2
   
    Application.ScreenUpdating = False
   
Rem traverser ark
    For Each ark In ActiveWorkbook.Sheets
        If InStr(relevanteArk, UCase(ark.Name)) > 0 Then
            ark.Activate
            antalræk = beregnAntalRækker
           
            If antalræk > 1 Then
                ActiveSheet.Range("A2:G" & CStr(antalræk)).Select
                Selection.Copy
               
                With totalArk
                    .Activate
                    .Range("A" & CStr(rækTotal)).Select
                    ActiveSheet.Paste
                    rækTotal = rækTotal + antalræk - 1
                End With
            End If
        End If
    Next
   
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
   
    MsgBox "Samling af ark afsluttet"
   
    totalArk.Activate
    Range("A1").Select
   
End Sub
Private Function beregnAntalRækker()
    beregnAntalRækker = ActiveCell.SpecialCells(xlLastCell).Row
End Function
Avatar billede mfynbo Juniormester
01. juni 2011 - 13:12 #12
Tak for det.
Avatar billede mfynbo Juniormester
01. juli 2011 - 10:09 #13
Hej Supertekst,
Jeg har et lille problem med macroen.
Først. Jeg har ændret på rækkefølgen af arkene, så de nu er som følger US JP CA KR FR.

Macroen kører stadig og tager alt med, men efter JP arket laver macroen et hul på ca 20 linier, som er blanke - efter de tomme linier kommer CA tallene så.

Jeg har prøvet at slette alt under jp arket, så der ikke er noget komma eller andet, jeg ikke ser.

Har du mulighed for at hjælpe mig?

Mvh.
Mfynbo
Avatar billede supertekst Ekspert
01. juli 2011 - 10:28 #14
Prøv at slette blanke linjer på JP (det er ikke nok med Delete - prøv med Slet) - ellers send filen til mig
Avatar billede supertekst Ekspert
01. juli 2011 - 11:52 #15
Fik du afklaret situationen?
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

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