14. oktober 2008 - 11:29Der er
7 kommentarer og 1 løsning
Flytte data fra kolonne til række
Hejsa
Jeg har fået en liste med navn, adresse, og postnr placeret i kolonne B, men for at gøre den søgbar ville jeg meget gerne have det hele på en række. Hvordan ville en VBA se ud hvis den skulle klare dette? Eller er der en nemmere måde at lave det på?
Listen starten med et navn i B3, så en adresse i B4 og et Postnr. i B5, så igen navn i B6, adresse i B7, og postnr. i B8 osv... Kunne godt tænke mig B4 flyttet til C3 og B5 til D3, B7 til C6 og B8 til D6 osv...
Det re sådan set "rigtig nok" - men når jeg markerer alle 15073 rækker i kolonne B og prøver at sætte dem ind i et nyt ark får jeg en fejl. Prøvede så med kun at markere 21 rækker, dette gik også fint med at indsætte men i 21 kolonner - målet var jo 3 kolonner. B navn, C Adresse, D postnr. Gør jeg noget forkert?
Et andet problem som jeg kan se opstå er at der i den oprindelige liste er en kolonne C med data i samme række som navnet som skal bruges. Jeg troede "bare lige" at man kunne indsætte 2 kolonner mellerm B og C og flytte værdierne som beskrevet ovenfor.
Jeg er dig svar skyldig. Jeg er ikke den store Excel-haj. Men du kan lægge et svar her og selv acceptere det. Opret derefter et nyt spørgsmål relateret til dit problem.
Du kan ikke transponere flere rækker end der er kolonner, og transponerer du noget af en kolonne, bliver der lige så mange celler i rækken, som der var i kolonnen. Det nemmeste er nok at lave en makro, der flytter det hele til et nyt ark og stiller det rigtigt op.
prøv at teste, den skriver i C+D+E kolonnen i samme ark.
Hav siden aktiv, inden du kører makroen
Public Sub Flyt() Dim I As Long, RW As Long, X As Long RW = Range("B65536").End(xlUp).Row X = 3 For I = 3 To RW Step 3 Cells(X, "C") = Cells(I, "B") Cells(X, "D") = Cells(I + 1, "B") Cells(X, "E") = Cells(I + 2, "B") X = X + 1 Next End Sub
Mange tak for svaret, jeg ændrede makroen til nedenstående og så passende den lige ind i mit ark. Igen mange tak, smid et svar for point.
Public Sub Flyt() Dim I As Long, RW As Long, X As Long RW = Range("B65536").End(xlUp).Row X = 3 For I = 3 To RW Step 3 Cells(X, "C") = Cells(I + 1, "B") Cells(X, "D") = Cells(I + 2, "B") 'Cells(X, "E") = Cells(I + 2, "B") X = X + 3 Next End Sub
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.