Jeg har en Excel-fil med data i 10 kolonner, hvor sidste kolonne indeholder oplysning om brugerID'er, der er tilknyttet data i de 9 foregående kolonner. Jeg har i alt 150 brugerID'er, der i alt repræsenterer 25.000 rækker med data.
Jeg vil gerne med en makro kunne selektere, så jeg får isoleret alle brugerID 1's data, som jeg så vil kopiere ud i en separat fil. Dernæst skal jeg have isoleret alle brugerID 2's data, som jeg også vil kopiere ud i en separat fil, etc.
Hvordan gør jeg dette smartest? Jeg tænker der skal bruges noget loop, men hvordan jeg kan gennemløbe brugerID-listen og kopiere hver enkelt brugers unikke data ud i en fil, kan jeg ikke gennemskue. Det er jeg dog helt overbevist om, at den ekspertise findes her i forummet. På forhånd mange tak for hjælp.
Er det en opgave som skal gentages mange gange? En pivot kan faktisk gøre nøjagtig hvad du beder om. Jeg beskriver som om du kender Pivot, så skriv hvis ikke du gør så laver vi en længere forklaring. Lav pivottabel, sæt data op med brugerID som filter. I pivottabel analyse menuen kan du nu under indstillinger vælge filtersider (jeg oversætter fra Engelsk så det kan være det hedder lidt anderledes). Nu vil Excel lave en fane med hver brugerID og den opstilling du har valgt i pivoten.
Det kan naturligvis automatiseres hvis det giver mere mening, men det er lige før du kan optage de steps i vba optageren og så virker det fremadrettet.
Tak for dit svar. Jeg kan dog ikke rigtig gennemskue, hvordan en pivot er løsningen, for jeg skal have dannet 150 individuelle Excel-filer, svarende til antallet af brugerID'er. Så jeg skal på en eller anden måde kunne selektere brugerID for brugerID og kopiere brugernes data ud i separate filer. Men måske er pivot'en en genvej til at isolere brugerID og data?
AH, filer ikke faner - jeg har nok været for hurtig til at læse.
Ja det kunne være første skridt, og så gemme det hele som individuelle filer bagefter. Eller have en mellemting. Er du selv lidt ferm i VBA?
Her er uddrag fra en løsning jeg lavede der lyder meget som din, som du kan se skaber den først en pivot og udlæser derefter til faneblade, så mangler du blot at gemme de enkelte faneblade:
Sub skab_pivot_til_kontrol()
Dim IntSidsterækkenr As Integer, IntSidstekolonnenr As Integer ' Variable IntSidsterækkenr = Sheets("Kontrolfil").Cells.SpecialCells(xlLastCell).Row IntSidstekolonnenr = Sheets("Kontrolfil").Cells.SpecialCells(xlLastCell).Column
' Indsæt pivot Sheets("Pivot Kontrolfil").Activate ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "Kontrolfil!R1C1:R" & IntSidsterækkenr & "C" & IntSidstekolonnenr, _ Version:=xlPivotTableVersion14).CreatePivotTable TableDestination:="R3C1", TableName:="PivotTable1" _ , DefaultVersion:=xlPivotTableVersion14 With ActiveSheet.PivotTables("PivotTable1").PivotFields("Medarb. nr.:") .Orientation = xlPageField .Position = 1 End With With ActiveSheet.PivotTables("PivotTable1").PivotFields("Dato") .Orientation = xlRowField .Position = 1 End With On Error Resume Next ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _ "PivotTable1").PivotFields("Timer"), "Sum of Timer", xlSum With ActiveSheet.PivotTables("PivotTable1").PivotFields("LønKat. tekst") .Orientation = xlColumnField .Position = 1 .PivotItems("0").Visible = False .PivotItems("(blank)").Visible = False End With
End Sub
Sub skab_faneblade()
Sheets("Pivot Kontrolfil").Activate ActiveSheet.PivotTables("PivotTable1").ShowPages PageField:="Medarb. nr.:" UserForm1.Hide MsgBox ("Mekanikerfaneblade skabt - gå til fanebladet start hvis du ønsker yderligere instruktion") End Sub
Synes godt om
Ny brugerNybegynder
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.