Avatar billede zicko Nybegynder
04. april 2009 - 12:53 Der er 7 kommentarer og
1 løsning

Hvordan samler man flere excel ark i ét (dynamisk)?

Hej eksperter!

Jeg har et excel regneark med 7 ark inde i (fanerne i bunden), 6 af de 7 ark indeholder prisliste for én varegruppe så når jeg skal skrive prislister ud skal jeg skrive arkene ud enkeltvis, og nogle varegrupper fylder kun et halvt A4 ark.

Jeg kunne godt tænke mig at samle 3 kolonner og alle linier fra de 6 ark på det første ark med en overskrift (ex. arkets navn) og et linieskift imellem hver af dem således at jeg kun skal skrive det ud fra ét ark.

Jeg kan godt finde ud af at lave det manuelt (henvise til data fra de enkelte ark i det første) - men hvordan får man gjort det på en måde så den selv finder ud af hvor mange linier der er i arket og gør plads til netop det antal i udskrifts-arket?

Håber I forstår hvad jeg mener - ellers må I endelige spørge!!
Avatar billede excelent Ekspert
04. april 2009 - 15:39 #1
Hvis du kan bruge en makro så

Sub samle()
Set dest = Sheets("Ark1")
dest.Range("A1:C10000") = "" ' sletter gl værdier
For Each sh In ThisWorkbook.Sheets
If sh.Name <> dest.Name Then
dest.Cells(dest.Cells(65500, "A").End(xlUp).Offset(2, 0).Row, "A") = sh.Name
rk = sh.Cells(65500, "A").End(xlUp).Row + 1
rk2 = dest.Cells(65500, "A").End(xlUp).Row + 1
x = sh.Range("A1:A" & rk)
dest.Range("A" & rk2 & ":C" & rk2 + rk - 1) = x
End If
Next
End Sub

ret Ark1 til aktuel samleark
denne kopierer værdier i ark 2-7 kolonne A til C
ret til aktuel, eller sig til hvis jeg skal gøre det
Avatar billede zicko Nybegynder
10. april 2009 - 18:01 #2
Så fik jeg mulighed for at afprøve det ;)

Sad længe og rodede rundt i Excel 2008 på min Mac, indtil jeg læste et sted at Excel 2008 for Mac ikke længere understøtter VBscript men kun Applescript.....

Så nu har jeg det inde i Excel 2008 på Windows.

Det virker for så vidt, bortset fra at den gentager Kolonne A 3 gange i stedet for at tage de andre kolonner.. Jeg kan ikke helt gennemskue scriptet så jeg selv kan rette det, er det muligt at du kan lave en lille forklaring og/eller rette det til så det er kolonnerne: A, B og H der indlæses i samlearket?
Avatar billede excelent Ekspert
10. april 2009 - 19:11 #3
Sub samle()
Set dest = Sheets("Ark1")
dest.Range("A1:H10000") = "" ' sletter gl værdier
For Each sh In ThisWorkbook.Sheets
If sh.Name <> dest.Name Then
dest.Cells(dest.Cells(65500, "A").End(xlUp).Offset(2, 0).Row, "A") = sh.Name
rk = sh.Cells(65500, "A").End(xlUp).Row + 1
rk2 = dest.Cells(65500, "A").End(xlUp).Row + 1
x = sh.Range("A1:B" & rk)
dest.Range("A" & rk2 & ":B" & rk2 + rk - 1) = x
y = sh.Range("H1:H" & rk)
dest.Range("H" & rk2 & ":H" & rk2 + rk - 1) = y
End If
Next
End Sub
Avatar billede zicko Nybegynder
11. april 2009 - 01:12 #4
Nu får jeg i stedet en "subscript out of range" ??
Avatar billede excelent Ekspert
11. april 2009 - 08:35 #5
så er det vist et arknavn du skal rette
Avatar billede zicko Nybegynder
11. april 2009 - 16:32 #6
perfekt - det virker! mange tak for hjælpen!
Avatar billede zicko Nybegynder
11. april 2009 - 16:33 #7
Laver du ikke lige et svar? :)
Avatar billede excelent Ekspert
11. april 2009 - 17:52 #8
ok velbekom
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

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