19. maj 2016 - 13:23Der er
5 kommentarer og 1 løsning
Kopiere rækker med bestemt data fra et ark til et andet
Jeg har et excel ark hvor jeg skal have kopieret nogle bestemte rækker fra et ark til et andet. Arket jeg skal kopiere fra(overslag) indholder i kolonne G ordet "I alt" i de rækker som jeg gerne vil have kopieret over i det andet ark (udvalgte data). De celler der skal kopieres med over er fra kolonne A til G samt S til AH i disse rækker.
Det er i excel 2013(engelsk version)
Håber nogen kan hjælpe med en løsning da jeg ikke selv er excelhaj!
Sub FlytData() Dim LastRowOver, LastRowUdv, x As Integer LastRowOver = Worksheets("Overslag").Range("G65536").End(xlUp).Row LastRowUdv = Worksheets("Udvalgte Data").Range("A65536").End(xlUp).Row For x = 2 To LastRowOver If Cells(x, 7) = "I alt" Then Worksheets("Overslag").Range(Cells(x, 1), Cells(x, 7)).Copy Destination:=Worksheets("Udvalgte Data").Cells(LastRowUdv, 1) Worksheets("Overslag").Range(Cells(x, 19), Cells(x, 34)).Copy Destination:=Worksheets("Udvalgte Data").Cells(LastRowUdv, 19) LastRowUdv = LastRowUdv + 1 End If Next End Sub
En lille rettelse for at undgå overskrivning af sidste linie:
Sub FlytData() Dim LastRowOver, LastRowUdv, x As Integer LastRowOver = Worksheets("Overslag").Range("G65536").End(xlUp).Row LastRowUdv = Worksheets("Udvalgte Data").Range("A65536").End(xlUp).Row For x = 2 To LastRowOver If Cells(x, 7) = "I alt" Then Worksheets("Overslag").Range(Cells(x, 1), Cells(x, 7)).Copy Destination:=Worksheets("Udvalgte Data").Cells(LastRowUdv + 1, 1) Worksheets("Overslag").Range(Cells(x, 19), Cells(x, 34)).Copy Destination:=Worksheets("Udvalgte Data").Cells(LastRowUdv + 1, 19) LastRowUdv = LastRowUdv + 1 End If Next End Sub
Mange tak for dit forslag - jeg får dog et problem når jeg kører makroen da mine data i arket der kopieres fra for nogle af kolonnerne er formler - 3 kolonner er summen af nogle af de rækker jeg ikke ønsker med over i det nye ark og en anden kolonne bruger i vlookup en celle fra det første ark. Kan man kopiere således at det blot er resultatet af formlen der kopieres over og ikke selve formlen. Eller er der en anden løsning?
Sub FlytData() Dim LastRowOver, LastRowUdv, x As Integer LastRowOver = Worksheets("Overslag").Range("G65536").End(xlUp).Row LastRowUdv = Worksheets("Udvalgte Data").Range("A65536").End(xlUp).Row For x = 2 To LastRowOver If Cells(x, 7) = "I alt" Then Worksheets("Overslag").Range(Cells(x, 1), Cells(x, 7)).Copy Worksheets("Udvalgte Data").Cells(LastRowUdv + 1, 1).PasteSpecial (xlPasteValues) Worksheets("Overslag").Range(Cells(x, 19), Cells(x, 34)).Copy Worksheets("Udvalgte Data").Cells(LastRowUdv + 1, 19).PasteSpecial (xlPasteValues) LastRowUdv = LastRowUdv + 1x End If Next End Sub
Hej Jens. Tak for dit sidste forslag som jeg dog ikke helt kunne få til at virke. I mellemtiden har jeg i stedet fundet frem til "power query" som kan det jeg ønsker uden brug af makro og med nem opdatering.
Var ikke lige opmærksom på ar jeg skulle have skrevet det forrige som et svar - men som sagt tak for hjælpen jens48 omend jeg fandt ud af at power query var en nemmere løsning at gå til også ift opdateringer i arket der hentes fra.
Synes godt om
Ny brugerNybegynder
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.