samling af data fra 22 ark i et ark med nogle fælles overskrifter
Hej Eksperter!
Jeg håber at I kan hjælpe mig.
Jeg har brug for hjælp til at samle en mængde ret kompleks data fra 22 seperate ark i et ark (en oversigt). Arkene der skal samles er ret store (kolonne A-BU og ca. 100 rækker) Dog har jeg ikke nødvendigvis behov for at overføre alle kolonner, evt. bare f.eks. A-G og R-AB
Hver af de 22 ark er sat op på nøjagtig samme måde. Dataen er registreret under 10 overskrifter.
Jeg vil gerne samle dataen fra alle 22 ark således at det samlede ark får samme udseende som de enkelte ark altså inddelt under hver overskrift. Jeg har forsøgt at illustrere det nedenfor.
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.
Jeg kan foreslå brug af INDIRECT (dk: INDIREKTE tror jeg).
Hvis du fx i en celle har teksten "Dataark2!E14" så giver INDIRECT("Dataark2!E14") den værdi, der står i cellen.
Dvs. hvis du i kolonne A fra A2 til A23 har navnene på dine dataaark stående og du i B1 har stående cellenavnet på den celle, du vil hente (fx "BU102"), så kan du lægge INDIRECT(A$2&"!"&B$1) ind i B2 og når du så kopierer den til B3-B23, så får du værdier fra de andre ark.
Jeg ved ikke om forklaringen lykkedes - det er ikke så let at forklare, men princippet er, at så længe du kan konstruere referencen til de celler, du vil have fat i, så kan du også hente værdierne med INDIRECT.
Jeg har brug for at mit samlede ark er dynamisk, altså at det automatisk registreres hvis jeg indsætter/sletter linier i de 22 ark.
Jeg har fundet denne VBA-kode i en anden forespørgelse her på siden. Den er skrevet af Mowi.
Sub CollectData() Dim wks As Worksheet, NextRow As Integer
Application.ScreenUpdating = False For Each wks In Worksheets If Not wks.Name = "Samlet2" Then wks.Activate Range("A2:C2").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Worksheets("Samlet2").Activate NextRow = Range("A65536").End(xlUp).Row + 1 Cells(NextRow, 1).PasteSpecial End If Next wks
Application.ScreenUpdating = True End Sub
Den gør i store træk det jeg skal have den til bortset fra at den ikke kan samle dataen under hver overskrift.
Kan man justere på ovenstående kode, så den kan samle dataene under hver overskrift?
Jeg var vist lidt hurtig med min sidste kommentar, jeg har siddet og fingereret lidt med den kommando du henviser til i dit første svar.
Jeg kan nogenlunde få det til at virke, men der er lige noget jeg ikke kan få til at fungere.
I hvert af mine ark er der for det meste flere rækker med data under hver overskrift. Altså noget lignende
Overskrift 1 Ark 1 Række 1 Ark 1 Række 2 Ark 2 Række 1 Ark 2 Række 2 Ark 2 Række 3 osv
Hvordan bruger jeg INDIRECT-funktionen til at få dataen med fra flere rækker?
Det skal lige siges at det endelige antal rækker under hver overskrift ikke er fast defineret, og jeg meget gerne vil have at det samlede ark ikke er afhængig af at man skal udvide med nye rækker. Mener du det er muligt med INDIRECT?
Ja, det mener jeg, men det kræver nogen disciplin omkring navngivning og nogle lidt længere formler. Lad mig prøve at skitsere princippet:
Lad os antage at du har antallet af ark i B1, antallet af rækker i B2, og den kolonne du vil hente fra i B3 (som bogstav).
Lad os antage, at dine ark hedder Ark1, Ark2, Ark3, ...
Og så vil du gerne starte med at hente fra C6 og nedefter.
Kolonne A er en hjælpekolonne til at holde styr på hvilket ark du er nået til og kolonne C er en hjælpekolonne til at holde styr på hvilken celle du er nået til. De kan evt skjules, når du er færdig.
I A6 og B6 skal der stå 1.
I A7 skal der stå:
=$A6+HVIS(OG(B7=$B$2;A6<$B$1);1;0)
som kopieres ned.
I B7 skal der stå:
=HVIS(B6=$B$2;1;B6+1)
som kopieres ned.
Som du vil se, så tæller de ark og række op. De slutter når det sidste ark nås.
Nu kan du konstruere navnet på den celle, du vil hente fra, og bruge INDIREKTE - dvs formlen i C6 bliver:
=INDIREKTE("Ark"&$A6&"!"&$B$3&$B6)
Jeg har prøvet at gøre dette eksempel simpelt. Du kan sikkert selv gøre det mere avanceret, når først du forstår principperne. Til den slags opgaver er INDIREKTE virkeligt stærkt, synes jeg.
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.