Avatar billede Oscar560 Novice
13. februar 2012 - 16:50 Der er 10 kommentarer og
1 løsning

vba kode til flytte data mellem ark

Hej eksperter

Er der en som kunne lave en vba kode, som flytter data fra ark 1 til 16 over i ark 17
Den skal flytte rækker i kolonne a-f hvor f indholder tal fra 1 til 52 over til ark 17 med et række som er tom imellem hver ark der er flyttet.
Avatar billede KarBols Praktikant
13. februar 2012 - 17:24 #1
Skal den søge i ark 1-16 efter rækker hvor kolonne f indeholder et tal mellem 1 og 52, eller skal den kopiere række 1-52?

Skal rækkerne stå over hinanden med et mellemrum, eller ved siden af hinanden med et mellemrum?
Avatar billede Oscar560 Novice
13. februar 2012 - 17:31 #2
den skal kopiere rækker fra kolonne A til F hvor f indholder tal mellem 1 til 52
Rækkerne skal stå under hinanden mellemrum kommer efter den har koperet data fra sheet 1, mellemrum data sheet 2, osv.
Avatar billede KarBols Praktikant
13. februar 2012 - 17:31 #3
Hvis den bare skal kopiere området A1:F52 burde følgende kunne gøre det..  men har ikke en Excel her, så har desværre ikke testet det.

x = 1
For n=1 to 16
  ThisWorkbook.Sheets(n).Range("A1:F52").Copy Destination:= ThisWorkbook.Sheets(17).Range("A" & x & ":F" & x+51)
  x = x + 53
Next
Avatar billede KarBols Praktikant
13. februar 2012 - 17:37 #4
Kan igen ikke teste - men burde virke!

DestLine = 1
For n=1 to 16
  LastRow = Range("F65536").End(xlUp).Row
    For m=1 to LastRow
      If ThisWorkbook.Sheets(n).Range("F" & m).Value <= 52 And ThisWorkbook.Sheets(n).Range("F" & m).Value >=1 then
        ThisWorkbook.Sheets(n).Range("A" & m & :F" & m).Copy Destination:= ThisWorkbook.Sheets(17).Range("A" & DestLine & :F" & DestLine)
        DestLine = DestLine + 1
      End if
    Next
  DestLine = DestLine + 1
Next
Avatar billede KarBols Praktikant
13. februar 2012 - 17:38 #5
Hov der var en fejl - undskyld!

DestLine = 1
For n=1 to 16
  LastRow = ThisWorkbook.Sheets(n).Range("F65536").End(xlUp).Row
    For m=1 to LastRow
      If ThisWorkbook.Sheets(n).Range("F" & m).Value <= 52 And ThisWorkbook.Sheets(n).Range("F" & m).Value >=1 then
        ThisWorkbook.Sheets(n).Range("A" & m & :F" & m).Copy Destination:= ThisWorkbook.Sheets(17).Range("A" & DestLine & :F" & DestLine)
        DestLine = DestLine + 1
      End if
    Next
  DestLine = DestLine + 1
Next
Avatar billede KarBols Praktikant
13. februar 2012 - 17:40 #6
For F****N også! - Jeg er da for blød i dag - endnu to fejl! Undskyld igen!

DestLine = 1
For n=1 to 16
  LastRow = ThisWorkbook.Sheets(n).Range("F65536").End(xlUp).Row
    For m=1 to LastRow
      If ThisWorkbook.Sheets(n).Range("F" & m).Value <= 52 And ThisWorkbook.Sheets(n).Range("F" & m).Value >=1 then
        ThisWorkbook.Sheets(n).Range("A" & m & ":F" & m).Copy Destination:= ThisWorkbook.Sheets(17).Range("A" & DestLine & ":F" & DestLine)
        DestLine = DestLine + 1
      End if
    Next
  DestLine = DestLine + 1
Next
Avatar billede Oscar560 Novice
13. februar 2012 - 17:40 #7
den skal ikke kopere område A1 til F52, der er 100 vis af rækker, den skal kopiere rækker over som indholder tal 1 til 52 sammen med rækker ved siden af
Avatar billede KarBols Praktikant
13. februar 2012 - 17:46 #8
Og det skulle sidste nye udgave meget gerne gøre! :)
Avatar billede KarBols Praktikant
13. februar 2012 - 17:52 #9
Fandt lige min arbejds-bærbar frem og testede. Den virker! :)

Private Sub CopyToSht17()
DestLine = 1
For n=1 to 16
  LastRow = ThisWorkbook.Sheets(n).Range("F65536").End(xlUp).Row
    For m=1 to LastRow
      If ThisWorkbook.Sheets(n).Range("F" & m).Value <= 52 And ThisWorkbook.Sheets(n).Range("F" & m).Value >=1 then
        ThisWorkbook.Sheets(n).Range("A" & m & ":F" & m).Copy Destination:= ThisWorkbook.Sheets(17).Range("A" & DestLine & ":F" & DestLine)
        DestLine = DestLine + 1
      End if
    Next
  DestLine = DestLine + 1
Next
End Sub
Avatar billede Oscar560 Novice
13. februar 2012 - 18:01 #10
For satan da det virker på dummy databasen som jeg har lavet! Så må jeg igang og afprøve det på den rigtige senere. Jeg siger mange mange tak.
Avatar billede KarBols Praktikant
13. februar 2012 - 18:02 #11
Jamen velbekomme! Må hellere poste den rigtige løsning som et "svar" :)

Private Sub CopyToSht17()
DestLine = 1
For n=1 to 16
  LastRow = ThisWorkbook.Sheets(n).Range("F65536").End(xlUp).Row
    For m=1 to LastRow
      If ThisWorkbook.Sheets(n).Range("F" & m).Value <= 52 And ThisWorkbook.Sheets(n).Range("F" & m).Value >=1 then
        ThisWorkbook.Sheets(n).Range("A" & m & ":F" & m).Copy Destination:= ThisWorkbook.Sheets(17).Range("A" & DestLine & ":F" & DestLine)
        DestLine = DestLine + 1
      End if
    Next
  DestLine = DestLine + 1
Next
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
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