Jeg skal lave en macro i Excel, som samler nogle data fra flere rækker i én celle.
Forestil jer, at regnearket ser således ud:
Kolonne A: Indeholder regioner - f.eks. Europa, Asien osv. En region kan optræde flere gange.
Kolonne B: Indeholder landene til regionerne.
Kolonne C: Indeholder salgsdata for hvert land.
I kan se et eksempel her:
Region Land Salg Resultat Europa England 12 "England: 12 Danmark: 94 Belgien: 24" Europa Danmark 94 Europa Belgien 24 Asien Kina 95 "Kina: 95 Indien: 37 Japan: 96" Asien Indien 37 Asien Japan 96
Jeg vil gerne lave en macro, der kan samle regionsdata for lande og salg i én celle per region, som vist i eksemplet ovenover (der skal være linie skift mellem hvert land).
Jeg forestiller mig, at der lavet et loop, der løber alle rækker i kolonne A igennem. I dette loop skal der laves en "If"-sætning, der afgør, om region 1 er lig med eller forskellig fra region 2. Hvis region 1 er lig med region 2, skal det tilsvarende post i kolonne B og C skrives til samme celle som før. Hvis region 1 er forskellig fra region 2, skal der skrives til en ny celle. Kan I følge mig?
Det er et meget stort datasæt, jeg arbejder med, så det ville være en kæmpe hjælp med en macro. Mit problem er bare, at jeg ikke har særlig stor ekspertise i Excel VBA macroer, så jeg ved ikke, hvordan man referer til de forskellig celler, kolonner mm. i regnearket.
Sub regs() regioner = "" Sum = "" i = 1 a = 0 While Ark1.Cells(i, 1).Value <> "" If region = "" Or region = Ark1.Cells(i, 1).Value Then Sum = Sum & Ark1.Cells(i, 2).Value & ": " & Ark1.Cells(i, 3).Value & " " Else a = i - 1 Ark1.Cells(a, 4).Value = "|" & Sum & "|" Sum = Ark1.Cells(i, 2).Value & ": " & Ark1.Cells(i, 3).Value & " " End If region = Ark1.Cells(i, 1) i = i + 1 Wend a = i - 1 Ark1.Cells(a, 4).Value = "|" & Sum & "|" End Sub
Sådan her: Sub regs() regioner = "" Sum = "" i = 1 a = 0 While ActiveWorkbook.ActiveSheet.Cells(i, 1).Value <> "" If region = "" Or region = ActiveWorkbook.ActiveSheet.Cells(i, 1).Value Then Sum = Sum & ActiveWorkbook.ActiveSheet.Cells(i, 2).Value & ": " & ActiveWorkbook.ActiveSheet.Cells(i, 3).Value & Chr(10) Else a = i - 1 ActiveWorkbook.ActiveSheet.Cells(a, 4).Value = Sum Sum = ActiveWorkbook.ActiveSheet.Cells(i, 2).Value & ": " & ActiveWorkbook.ActiveSheet.Cells(i, 3).Value & Chr(10) End If region = ActiveWorkbook.ActiveSheet.Cells(i, 1) i = i + 1 Wend a = i - 1 ActiveWorkbook.ActiveSheet.Cells(a, 4).Value = Sum End Sub
Jeg har brugt den fine samle makro i et andet ark, men har nu problemer i min Excel 2010 version. Det er denne linie der bliver high lightet i debrug mode:
While ActiveWorkbook.ActiveSheet.Cells(i, 1).Value <> ""
hvad kan være galt?
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.