09. februar 2004 - 16:45Der er
10 kommentarer og 1 løsning
Merge 2 ark til 1 ark
Jeg har 2 ark med 500 linier i hver, og med identisk opsætning, men med forskellig data. Jeg vil gerne merge de to ark til et 3. ark således, at man tager linie 1 fra ark 1 og placerer det på linie 1 i 3. ark, derefter linie 1 i ark 2 og placerer det i linie 2 på ark 3, derefter linie 2 fra ark 1 og placerer det i linie 3 på ark 3 osv osv. Er der en der har et forslag til en macro??
Et forlag: I linje 1 i ark 3 skriver du: +Ark1!A1..X1 I linje 2 i ark 3 skriver du: +Ark2!A1..X1 I Ark 3 kopierer du herfter linje 1 og 2 til de næste 1000 rækker.
Public Sub KopiAfRaekkerFra2Ark() Sheets("Ark3").Rows(1).Value = Sheets("Ark1").Rows(1).Value Sheets("Ark3").Rows(2).Value = Sheets("Ark2").Rows(1).Value For I = 2 To 500 A = Sheets("Ark3").Range("A65536").End(xlUp).Offset(1, 0).Row Sheets("Ark3").Rows(A).Value = Sheets("Ark1").Rows(I).Value A = Sheets("Ark3").Range("A65536").End(xlUp).Offset(1, 0).Row Sheets("Ark3").Rows(A).Value = Sheets("Ark2").Rows(I).Value Next End Sub
Det kan faktisk godt lade sig gøre uden makro. Dog skal der lige laves et par hjælpekolonner.
1) I celle A1 på ark 3 skriver du følgende formel: =IF(MOD(ROW();2)=0;"Sheet2";"Sheet1") =HVIS(REST(RÆKKE();2)=0;"Ark2";"Ark1") på dansk
2) Marker cellen og kopier den så langt ned du ønsker. Vi har nu angivet ark-referencen.
3) I celle B1 og B2 på ark 3 skriver du "1" I celle B3 på ark 3 skriver du følgende formel: =IF(B2=B1;B2+1;B2) =HVIS(B2=B1;B2+1;B2) på dansk Formlen kopieres så langt ned, som formlen i kolonne A. Nu har vi også linie-referencen på plads.
4) I celle C1 på ark 3 kan du nu skrive følgende formel: =INDIRECT(A1&"!"&"A"&B1) =INDIREKTE(A1&"!"&"A"&B1) på dansk Formlen kopieres ned. Nu skulle værdierne være hentet fra de respektive ark.
Når først du har værdierne over kan du altid indsætte indholdet som værdier og slette hjælpekolonnerne igen.
Public Sub KopiAfRaekkerFra2Ark() A = 1 For I = 1 To 500 Sheets("Ark3").Rows(A).Value = Sheets("Ark1").Rows(I).Value A = A + 1 Sheets("Ark3").Rows(A).Value = Sheets("Ark2").Rows(I).Value A = A + 1 Next End Sub
Hej kabbak. Det ser rigtig godt ud. Da ikke alle 500 rækker er udfyldt fra starten, kunne jeg ønske mig, at den testede på hvormange rækker der var udfyldt i ark 4 (ark 1 og 2 dannes på grundlag af ark 4)
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.