Avatar billede erlandsen Seniormester
05. februar 2003 - 11:05 Der er 12 kommentarer og
1 løsning

Makro til at kopiere linier i Excel

Jag har data liggende rækkevis med et beløb pr. måned kolonnevis som i stedet skal være rækkevis...

F.eks. har jeg en række, hvor beløbet for jan03 er i kolonne G, feb03 er i kolonne H osv.
I stedet skal beløbet for jan03 være i række 1, beløbet for feb03 være i række 2 osv.

Jeg forestiller mig noget med at indskyde 11 nye rækker under nuværende 338 rækker, og kopiere hver række til efterfølgende 11 rækker, så der er tolv ens rækker pr. nuværende række. Herefter forestiller jeg mig at man kopierer første række fra kolonne G til R (med værdierne) og paster (transpose) dem i række 1-12.

Er der nogen der kan lave en makro til dette?
Avatar billede martin_moth Mester
05. februar 2003 - 11:55 #1
Ja - og det kan du garanteret også selv, hvis du kikker lidt i www.eksperten.dk/spm/301628
Avatar billede martin_moth Mester
05. februar 2003 - 11:57 #2
PS: Hvis det kun skal gøres een gang, er det vist meget hurtigere at gøre manuelt end med en macro, der godt kan blive lidt voldsom...
Avatar billede jkrons Professor
05. februar 2003 - 12:17 #3
Kan du ikke bare markere det hele, kopiere og indsætte speciel med transpose, fx under de eksisterende linier og så slette det oprindelige? Så slipper du for makroer og meget andet godtt.
Avatar billede erlandsen Seniormester
05. februar 2003 - 14:59 #4
Jeg har 338 rækker hvor jeg skal indsætte 11 rækker (insert copied cells) under hver række. Det kan gøres med en makro. Hvis jeg skulle gøre det manuelt vil det tage 2-3 timer.
Når dette er gjort skal jeg kopiere hver tolvte række og lave paste transpose - hvilket jeg også mener er hurtigere med en makro selv om det bare er en gang dette skal gøres.
Avatar billede martin_moth Mester
05. februar 2003 - 15:11 #5
OK!

Men så er det jo bare at klø på - kik på ovenstående link, i det svar du har afvist. Der står hvordan du kan indsætte rækker hvor du vil

Noget med for i = 1 to 338 ... :o)
Avatar billede martin_moth Mester
05. februar 2003 - 15:28 #6
Når du så har oprettet dine nye rækker som beskrevet i ovenstående, kan du kopiere dine ønskede celler:

    Cells(1, 5).Select
    Selection.Copy
    Cells(1, 1).Select
    ActiveSheet.Paste

Det er bare at udskifte tallene med variabler (fx. Cells(i, j).Select, og så lave et loop så i og j får passende værdier. Integ mystisk i det - men det tager lidt tid lige at lure, hvordan man skal varierer på i og j...

Husk at dim'me i og j som Integers
Avatar billede jkrons Professor
05. februar 2003 - 23:13 #7
Prøv med denne makro, men gør det i en kopi først ;-) Jeg tror at den gør det du ønsker - hvis jeg altså har forstået dig rigtigt.

Sub CopyTranspose()
'
' Jan Kronsell Feb-03
Dim a As Byte
Dim b As Byte

a = 2
b = 13

For i = 1 To 338
    Rows(a & ":" & b).Select
    Selection.Insert Shift:=xlDown
    Range("G" & a - 1 & ":" & "R" & a - 1).Select
    Selection.Copy
    Range("G" & a & ":" & "G" & b).Select
    Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
        , Transpose:=True
    ActiveCell.Offset(-1, 0).Activate
    ActiveCell.EntireRow.Select
    Selection.Delete Shift:=xlUp
a = a + 12
b = b + 12
Next i
End Sub
Avatar billede erlandsen Seniormester
06. februar 2003 - 16:11 #8
Hej jkrons
Jeg får den ikke helt til at virke.
Kan jeg evt. sende den til dig - så tror jeg det er nemmere - for jeg tror du har fat i den lange ende?
Avatar billede jkrons Professor
06. februar 2003 - 16:13 #9
Send den bare til jkr@lyngby.nu, men jeg får nok først tid til at se på den i løbet af aftenen.
Avatar billede jkrons Professor
07. februar 2003 - 11:06 #10
Jeg har modtaget arket, men jeg kan se at det er mere komplekst end det du skitserede i første omgang fordi, du har andre ting i regnearket, som der også skal tages højde for, fx navnene, som skal gentages i de nye rækker, og der er også flere rækker, der skal transposes, men den ene kun en gang osv. Jeg ser på det i løbet dagen.
Avatar billede jkrons Professor
07. februar 2003 - 12:18 #11
Her er makroen. Jeg sender også arket direkte til dig lige om lidt.

Jeg håber at det nu fungerer som ønsket:

Sub CopyTranspose()
'
' Jan Kronsell 07 Feb-03
Dim A As Integer
Dim B As Integer

A = 3
B = 14

For i = 1 To 338

    Rows(A & ":" & B).Select
    Selection.Insert Shift:=xlDown
   
    Range("D1:O1").Select
    Selection.Copy
   
    Range("D" & A).Select
    Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
        , Transpose:=True
       
    Range("D" & A - 1 & ":" & "O" & A - 1).Select
   
    Selection.Copy
   
    Range("E" & A).Select
    Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
        , Transpose:=True
    Range("A" & A - 1 & ":" & "C" & A - 1).Select
   
    Selection.AutoFill Destination:=Range("A" & A - 1 & ":" & "C" & B), Type:=xlFillDefault

    ActiveCell.EntireRow.Select
    Selection.Delete Shift:=xlUp
   
    A = A + 12
    B = B + 12

Next i

    Range("D1:O1").Select
    Selection.ClearContents
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "Måned"
    Range("E1").Select
    ActiveCell.FormulaR1C1 = "Beløb"
    Range("E2").Select
    Columns("D:D").EntireColumn.AutoFit
   
End Sub
Avatar billede erlandsen Seniormester
07. februar 2003 - 15:15 #12
Tak for hjælpen!
Avatar billede jkrons Professor
07. februar 2003 - 15:16 #13
Velbekomme!
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