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?
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
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.