24. august 2016 - 09:03Der er
16 kommentarer og 1 løsning
Kopiere celler fra et ark til et andet i excel og indsætte i næste ledige række
Hej Jeg har forsøgt af flere omgange at lave en Makro, som kan kopiere celler fra et ark over til et ark i samme dokument. Cellerne skal indsættes i næste ledige række i tabellen.
Mit behov er følgende: Fra Ark 7 skal følgende kopieres: Kolonne B-K, række 8-50 (alternativ alle de rækker som er udfyldt fra 8 og ned, hvis muligt.) Skal indsættes i Ark 1 i samme rækkefølge som ovenstående - dvs. kolonne B-K, næste ledige række i tabellen.
I tabellen har jeg forskellige formler fra kolonne L-O, så det er vigtigt at disse ikke overskrives.
Jeg er TOTAL nybegynder, og har forsøgt at kode dette, ved hjælp af andre lignende indlæg herinde, men har endnu ikke fået det til at fungere :(
Ved ikke helt om jeg forstår dig helt korrekt. Vil du gerne have en fil at kigge i, og i så fald - hvordan kan jeg vedhæfte en fil hertil???
Jeg er kun der, hvor jeg har tabellerne sat op i de to Ark, og så har jeg manuelt kopieret fra det ene ark, og indsat i det andet. Så det er vist helt fra scratch.
Forsøgte mig med at indspille en markro, ved at kopiere de enkelte kolonner, men den blev ved med at overskrive de gamle data.
Sub Flyt() Dim RFra, RTil As Integer RFra = Application.WorksheetFunction.CountA(Sheets("Ark7").Range("B8:B50")) + 7 RTil = Sheets("Ark1").Range("B65536").End(xlUp).Row Sheets("Ark7").Range("B8:K" & RFra).Copy Destination:=Sheets("Ark1").Range("B" & RTil) End Sub
En lille rettelse til makroen (den anden makro overskrev sidste linie):
Sub Flyt() Dim RFra, RTil As Integer RFra = Application.WorksheetFunction.CountA(Sheets("Ark7").Range("B8:B50")) + 7 RTil = Sheets("Ark1").Range("B65536").End(xlUp).Row +1 Sheets("Ark7").Range("B8:K" & RFra).Copy Destination:=Sheets("Ark1").Range("B" & RTil) End Sub
Jeg forsøgte mig lige lidt frem, og lavede et nyt modul til mit projekt i Visual Basic. Heri indsatte jeg din formel og ændrede navnene, så det passer med mine kolonner. Og så overførte den faktisk til arket :)
Der opstod imidlertid et par nye udfordringer:
1) Den næste ledige linje i det ark, som der skal indsættes i er linje 323, men makroen indsætter først data i linje 1292.
2) I tabellen i ark 7 (Converter), som jeg vil kopiere, har jeg i kolonne B, C, J og K lavet formler, som beregner på bagrund af de øvrige kolonner. Jeg vil ikke flytte formlerne med over i mit ark 1 (Samleark) - kun de værdier, som den beregner.
Ang. punkt 1: Du har sikkert noget stående i celle B1291. Der er to mulige løsninger. Du kan slette det eller hvis det ikke er muligt ændre linie 4 (i nedenstående eksempel linie 5) til:
Denne makro hvor jeg har indsat de rigtige arknavne indsætter kun værdierne:
Sub Flyt() Dim RFra, RTil As Integer x = ActiveCell.Address RFra = Application.WorksheetFunction.CountA(Sheets("Converter").Range("B8:B50")) + 7 RTil = Sheets("Samleark").Range("B1290").End(xlUp).Row Sheets("Converter").Range("B8:K" & RFra).Copy Sheets("Samleark").Range("B" & RTil).PasteSpecial xlPasteValues Range(x).Select End Sub
Hej Jens Vi nærmer os noget der kan bruges. Nu kan jeg i hvert fald overføre værdier fra det ene ark til det andet :)
Fandt også udfordringen med mit spørgsmål 1), vedrørende at den fylder ind i felter længere nede i tabellen. Fejlen ligger vist i forklaringen af min problemstilling :)
Der var ingen data i linje 1292, foruden formlerne i kolonne MNO. Udfordringen tror jeg er, at definerede i min problemstilling, at jeg gerne vil kopiere Værdierne B8 til B50, men det er ikke altid at jeg udnytter alle rækker. Dvs., at der reelt måske kun er 4 rækker der er aktive/udfyldte, og i så fald er det kun dem, som skal kopieres med over i samlearket. Giver det mening, og er det muligt at kode sig ud af det?
To ekstra mindre udfordringer, som jeg er stødt på, nu vi er i gang: 1) Når jeg trykker på Flyt data knappen, må billedet gerne automatisk skifte til Samlearket 2) Jeg vil rigtig gerne have, hvis de aktive celler i samlearket i kolonne B-O automatisk farves lysegrønne, hvis værdien i cellen i kolonne B hedder "Optimeret". Har forsøgt med en betinget formel, men kan ikke få den til at lave det på de enkelte rækker.
Hvis det ikke er muligt at kode således, at kun celler med aktive værdier (dvs. tal og ikke formler) flyttes, kan man så alternativt koble en HVIS formel på flyttefunktionen, således at den kun flytter de rækker B-K, række 8:50, hvis der er en værdi i kolonne I, som er større end 0,1?
Skal det forstås således at celler med formler ikke skal kopieres, eller skal værdien af formelerne kopieres. Den sidste makro jeg sendte overfører værdien af formlerne. Men du ønsker altså at teste hver enkelt række på hvad der står i kolonne I?
Det er kunsten lige at få det formuleret, så det giver mening :)
Du har helt ret i, at formlerne i cellerne ikke skal kopieres - kun værdierne. I arket har jeg lavet rækkerne 8-50 med gennemgående HVIS formler i kolonne B, D, J og K. Alle disse kolonnerne udfyldes alene med værdier, hvis værdien i I > 0,1. Er I < 0,1, vil kolonne B, D, J og K være blanke.
Hvor mange rækker jeg skal kopiere over til mit andet ark, varierer fra gang til gang. Nogle gange skal der 5 rækker med over, andre gange 43 rækker.
Hvis muligt, vil det derfor give god mening, at den tester de enkelte rækker ift. værdien i I. Altså: Hvis I>0,1 overføres alle værdier i rækken fra kolonne B-K. Hvis I<0,1 overføres ingenting.
Giver det mening? Ellers uddyber jeg gerne yderligere.
Det er vel ikke muligt at vedhæfte et ark herinde? :)
Sub Flyt() Dim R, RTil As Integer For R = 8 To 50 RTil = Sheets("Samleark").Range("B1290").End(xlUp).Row If IsNumeric(Sheets("Converter").Range("I" & R)) And Sheets("Converter").Range("I" & R) >= 0.1 Then Sheets("Converter").Range("B" & R & ":K" & R).Copy Sheets("Samleark").Range("B" & RTil + 1).PasteSpecial xlPasteValues End If Next Application.CutCopyMode = False Sheets("Samleark").Select Range("B" & RTil).Select End Sub
Angående formattering, så gå til B2 og marker området B2:O100 (eller længere ned) og skriv under formattering denne formel:
Den er bare lige i øjet. Tusind mange tak for din store hjælp!
Det bliver et super værktøj...
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.