Avatar billede sas_mart Nybegynder
29. januar 2010 - 10:32 Der er 7 kommentarer

Transpose af data med flere kolonner

Jeg har et datatræk hvor jeg har data for 12 måneder i kolonnerne, som jeg gerne vil have i en lang række. Er der en smart måde at transponere data på evt. via makro..

Eks.

Produkt  Navn    Januar  Februar  Marts  April osv....
1                A          100          350          150       
2                B          200          100          400

ville gerne have det som

Produkt A  Navn A  Januar  100
Produkt A  Navn A  Februar 350
Produkt A  Navn A  Marts      150
Produkt A  Navn A  April
Produkt B  Navn A  Januar  200
Produkt B  Navn A  Februar 100
Produkt B  Navn A  Marts      400
Produkt B  Navn A  April

Håber det giver lidt mening
Avatar billede KurtOA Praktikant
29. januar 2010 - 11:11 #1
Du ved formentligt hvordan man du ganske enkelt og helt uden makroer kan transposnere et område?

Markér området du vil transponere, højreklik og vælg "kopier".

Marker en anden celle et ledig sted i  arket, højreklik og vælg indsæt speciel, transponer. Nu indsættes dine data således at kolonner og rækker er byttet om.

Med en sub i vba kan du evt gøre som her:

Hvor du blot skal stå i området hvor du vil tranponere fra.
Området transponeres så til det område hvor celle B26 er øverste venstre celle.

sub transponerområde()
ActiveCell.CurrentRegion.Select
Selection.Copy
   
Range("B26").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True

end sub

mvh Kurt
Avatar billede sas_mart Nybegynder
29. januar 2010 - 13:36 #2
Hej Kurt,

The tricky part er at hvis jeg gør det på den kendte måde så får jeg "bare" byttet rundt på kolonner og rækker - og der jeg gerne vil have er et datasæt hvor jeg får en kolonne med alle måneder med en tilsvarende kolonne med alle værdier. Så fra at have 12 dimensioner (en for hver måned) har jeg nu en dimension nemlig måneder.....
Avatar billede KurtOA Praktikant
29. januar 2010 - 13:49 #3
Ok - overvejer lige løsningen på dette ;-)
Avatar billede Slettet bruger
29. januar 2010 - 15:59 #4
Er det korrekt forstået, at du for eksempel fra A2 og nedefter ønsker først 12 gange A,derefter 12 gange B osv. Fra B2 og nedefter Januar, februar,......, december og derefter forfra igen osv. og fra C2 og nedefter 100, 350, 150 osv.?

Hans
Avatar billede oleelo Nybegynder
30. januar 2010 - 16:57 #5
Hej
Prøv med denne kode
Dine data skal stå/starte i Ark1- celle A1 og flyttes over i Ark2

Sub DanListe()
    HverR = 2
    ListeR = 1
    While Sheets("Ark1").Cells(HverR, 1).Value <> ""
   
        For x = 3 To 15 'hver mdr
       
        Sheets("Ark2").Cells(ListeR, 1).Value = Sheets("Ark1").Cells(1, 1).Value 'overskrift
        Sheets("Ark2").Cells(ListeR, 2).Value = Sheets("Ark1").Cells(HverR, 1).Value
        Sheets("Ark2").Cells(ListeR, 3).Value = Sheets("Ark1").Cells(1, 2).Value
        Sheets("Ark2").Cells(ListeR, 4).Value = Sheets("Ark1").Cells(HverR, 2).Value
        Sheets("Ark2").Cells(ListeR, 5).Value = Sheets("Ark1").Cells(1, x).Value
        Sheets("Ark2").Cells(ListeR, 6).Value = Sheets("Ark1").Cells(HverR, x).Value
        ListeR = ListeR + 1
        Next x
   
    HverR = HverR + 1
    Wend
   
End Sub

mvh oleelo
Avatar billede Slettet bruger
30. januar 2010 - 18:33 #6
Hvis du (som jeg) skulle foretrække formelløsninger overalt hvor det er muligt at undgå VBA, så prøv med følgende:

Navngiv dit dataudtræk tbl.

Indsæt følgende formler

I A2: =INDEX(tbl;INT((ROW()-2)/12+2);1)
I B2: =INDEX(tbl;1;MOD(ROW()-2;12)+2)
I C2: =HLOOKUP(B2;tbl;INT((ROW()-2)/12+2);0)

Hvis dansk Excel:
I A2: =INDEKS(tbl;HELTAL((RÆKKE()-2)/12+2);1)
I B2: =INDEKS(tbl;1;REST(RÆKKE()-2;12)+2)
I C2: =VOPSLAG(B2;tbl;HELTAL((RÆKKE()-2)/12+2);0)

Kopier formlerne nedad så langt som påkrævet.

Hans
Avatar billede Slettet bruger
31. januar 2010 - 07:02 #7
Oops
Ret vedrørende formlen i B2 til:
=INDEKS(tbl;1;REST(RÆKKE()-2;12)+3)

Hans
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