02. september 2003 - 19:12Der er
6 kommentarer og 1 løsning
Opsamling af data til et samlet Sheet
Hejsa.
Er der nogen som kan hjælpe med følgende? :
Jeg har et Excel ark, som indeholder en masse sheets. På Sheet1 er der data fra f.eks. A1:A8 på Sheet2 er der data fra A1:A19 / B1: B27 o.v.s. altså det er forskelligt hvor data står på de forskellige Sheets.
Jeg vil gerne have en makro eller en funktion som kan hente data fra alle disse Sheets og samle dem i et ”oversigts” Sheet.
Lige et par spørgsmål : Som jeg forstår dit eksempel, kan der eksempelvis være data i A1 på flere sheets. Hvis det er tilfældet hvordan skal de så placeres på oversigtssiden? 1) Skal de lægges sammen 2) skal data i kolonne A placeres under hinanden nedefter, sheet efter sheet , 3) eller skal eksempelvis alt data fra sheet1 placeres i kolonne a - b, alt fra sheet2 i kolonne c-e, alt fra sheet3 i kolonne f-g osv. afhængig af hvor mange kolonner der bruges i hvert sheet.
OK jeg ved ikke om jeg har forstået korrekt. Men jeg har lavet nedenstående lille ting. Kopier makroen ind i et modul og kør den.
Den forudsætter at 1) dit oversigtssheet er tomt 2) at dit oversigtssheet er det første ark 3) at alle efterfølgende ark skal hentes over i oversigten
Håber du kan bruge det : ________________________________________________ Sub summer() Application.ScreenUpdating = False antalark = Sheets.Count For s = 2 To antalark Step 1 Sheets(s).Activate Dim kol As Integer Dim rak As Integer kol = ActiveSheet.UsedRange.Columns.Count rak = ActiveSheet.UsedRange.Rows.Count For k = 1 To kol For a = 1 To rak Sheets(s).Activate If Cells(a, k) <> "" Then Cells(a, k).Copy Sheets(1).Activate Cells(1, k).Select While Selection <> "" ActiveCell(2, 1).Select Wend Selection.PasteSpecial xlValues End If Next Next Next Sheets(1).Activate End Sub
Så er den fikset (samme forudsætninger som før) : __________________ Sub summer() Application.ScreenUpdating = False antalark = Sheets.Count For s = 2 To antalark Step 1 Sheets(s).Activate Dim kol As Integer Dim rak As Integer posC1 = (InStr(1, (ActiveSheet.UsedRange.Address(ReferenceStyle:=xlC1R1)), "C")) posC2 = (InStr((posC1 + 1), (ActiveSheet.UsedRange.Address(ReferenceStyle:=xlC1R1)), "C")) PosR2 = (InStr(2, (ActiveSheet.UsedRange.Address(ReferenceStyle:=xlC1R1)), "R")) kol = (Mid((ActiveSheet.UsedRange.Address(ReferenceStyle:=xlC1R1)), posC2 + 1, 3)) rak = (Mid((ActiveSheet.UsedRange.Address(ReferenceStyle:=xlC1R1)), PosR2 + 1, posC2 - PosR2 - 1)) For k = 1 To kol For a = 1 To rak Sheets(s).Activate If Cells(a, k) <> "" Then Cells(a, k).Copy Sheets(1).Activate Cells(1, k).Select While Selection <> "" ActiveCell(2, 1).Select Wend Selection.PasteSpecial xlValues End If Next Next Next Sheets(1).Activate End Sub
Hej. Kan du ikke lægge et svar, så jeg kan give dig point? Nu har jeg lidt at arbejde med, det er ikke lige det jeg skal/skulle bruge, kan desværre ikke sende dig ark, da data er meget fortrolige... //Brandmanden
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.