26. september 2010 - 23:04Der er
13 kommentarer og 1 løsning
Data fra mange ark, skal samles i et ark .. hjælp
Hej Eksperter,
Jeg har en workbook der indeholder mange sheets, alle med forskellige navne, og der kommer hele tiden flere til. Hver sheet har et fast data-område (kolonne a til h, række 7 til 40) som jeg godt kunne tænke mig at kunne samle i ét ark og undlade rækker hvor der ingen data er. Ind til videre har det fungeret via copy/paste metoden, meeeen det er sgu ikke særlig effektivt. Findes der en genial løsning?
Lav et nyt ark og navngiv den SamleArk, det er her den gemmer.
koden virker forudsat at der altid er data i kolonne A, når rækken ikke er tom. Ellers ret kolonne bogstavet i sidste linje.
Public Sub HentArk() Dim Ws As Worksheet, data As Variant Worksheets("SamleArk").Cells.ClearContents
For Each Ws In ThisWorkbook.Sheets If Ws.Name <> "SamleArk" Then data = Ws.Range("A7:H40") Worksheets("SamleArk").Range("A65536").End(xlUp).Offset(1, 0).Resize(UBound(data, 1), UBound(data, 2)) = data End If Next Range("A1:A" & Range("A65536").End(xlUp).Row).SpecialCells(xlCellTypeBlanks).EntireRow.Delete Shift:=xlUp End Sub
Kan man gøre noget således at de data der indsættes i samlearket beholder deres formattering. Og kan samlearket tage overskriften A4:H6 fra en af de ark der samles fra. Overskrifterne er ens i alle ark, og altid A6:H6
Public Sub HentArk() Dim Ws As Worksheet, data As Variant Worksheets("SamleArk").Cells.ClearContents
For Each Ws In ThisWorkbook.Sheets If Ws.Name <> "SamleArk" Then Ws.Range("A6:H6").Copy Worksheets("SamleArk").Range("A1") Ws.Range("A7:H40").Copy Worksheets("SamleArk").Range("A65536").End(xlUp).Offset(1, 0) End If Next Range("A1:A" & Range("A65536").End(xlUp).Row).SpecialCells(xlCellTypeBlanks).EntireRow.Delete Shift:=xlUp End Sub
Mange tak - yes, nu virker det. Hvis jeg har to Sheets som denne makro ikke skal tage data fra og lægge i samlearket, kan man så gøre noget smart? (sheet navne "overview" & "kunder")
Hvis koden skal se sådan her ud, så virker det desværre ikke!
Public Sub HentArk() Dim Ws As Worksheet, data As Variant Worksheets("SamleArk").Cells.ClearContents
For Each Ws In ThisWorkbook.Sheets If Ws.Name <> "SamleArk" or Ws.Name <> "overview" or Ws.Name <> "kunder" Then Ws.Range("A6:H6").Copy Worksheets("SamleArk").Range("A1") Ws.Range("A7:H40").Copy Worksheets("SamleArk").Range("A65536").End(xlUp).Offset(1, 0) End If Next Range("A1:A" & Range("A65536").End(xlUp).Row).SpecialCells(xlCellTypeBlanks).EntireRow.Delete Shift:=xlUp End Sub
Overskrifterne i samlearket forsvinder, og der hentes data fra de ark som skulle springes over, og nogle data bliver gengivet i samlearket 2 gange.
Public Sub HentArk() Dim Ws As Worksheet, data As Variant Worksheets("SamleArk").Cells.ClearContents
For Each Ws In ThisWorkbook.Sheets If Ws.Name <> "SamleArk" And Ws.Name <> "overview" And Ws.Name <> "kunder" Then Debug.Print Ws.Name Ws.Range("A6:H6").Copy Worksheets("SamleArk").Range("A1") Ws.Range("A7:H40").Copy Worksheets("SamleArk").Range("A65536").End(xlUp).Offset(1, 0) End If Next Range("A1:A" & Range("A65536").End(xlUp).Row).SpecialCells(xlCellTypeBlanks).EntireRow.Delete Shift:=xlUp 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.