Avatar billede mr.handstand Novice
30. august 2004 - 09:48 Der er 6 kommentarer og
1 løsning

pivot og sammentælling uden VBA

Hejsa,
Jeg forsøger af forskellige årsager at løse nedenstående UDEN brug af VBA.

I et dynamisk miljø - en rapport med mange parametre og sammentællinger - skal jeg kunne optælle antallet af forskellige applikationer for et valgt organisatorisk niveau, dvs jeg kan starte med at sammentælle antallet på business unit niveau (hvor mange forskellige applikationer bruges i et organisatorisk område på 20+ afdelinger), derefter på Sub-unit niveau (10+ afdelinger) og slutteligt ned til den enkelte afdeling.

Masterdata er som følger:
Et ark indeholder 30.000+ rækker.
Arket lister pr. afdeling, pr. pc, hvilke programmer der er installeret, med en række pr. applikation pr. pc. Ud fra nedenstående princip.

PC-id  |  Afd-id  |  Software-ID(Navn i eksemplet)
PC1  |Afd-a  |Winzip
PC2  |Afd-a  |Winzip
PC10 |Afd-b  |Winzip
PC13 |Afd-d  |Winzip
PC5  |Afd-a  |MS Project
PC10 |Afd-a  |MS Project
PC11 |Afd-c  |MS Project
PC12 |Afd-a  |Interwise
PC13 |Afd-d  |Interwise
PC1  |Afd-a  |Unigraphics
PC2  |Afd-a  |Unigraphics
PC23 |Afd-x  |Winzip
PC6  |Afd-d  |Peregrine
PC7  |Afd-e  |Cube
PC7  |Afd-e  |Visio
PC7  |Afd-e  |TracePro

En PC knytter sig til en afdeling, men listen er principielt ikke-ordnet

Hvordan sammentæller jeg ovenstående, således at resultatet i eksemplet bliver:
Bus.Unit med Afd a,b,c,d: 5
Sub_unit med a,b: 4

Senere ønsker en anden at vise afdelingerne geografisk på landebasis, og vil vise afd d,e = 6

Med VBA (ønskes undgået)
Med brug af VBA ville jeg nok selv starte med at lave en pivot, der i rækkerne har gruppering baseret på afd-id, med underniveau: Software-id, og hvor data vil være count af antal forekomster af Software-id (i denne afd givet inddelingen). Brugeren indlæser herefter en række afdelings-id i et ark (faktisk igen en collection af collections, fordi han kan indlæse afdelinger i lige så mange puljer som han anvender kolonner) Med min collection af afdelinger som brugeren ønsker sammentalt vil jeg traversere pivot'en én afdeling ad gangen, og tilskrive nye software-id'er i et array, hvor ubound af array = antal applikationer for de valgte afdelinger, for hver gruppe af afdelinger nulstilles array selvfølgelig...

Men - kan jeg gøre dette uden brug af VBA overhovedet. Jeg tvivler selv, men pointene går til den, der løser det uden VBA. Alternativt med så lidt VBA som muligt, og så må vi jo file lidt i point-puljen med mængden af kode-linjer :-)
Avatar billede mugs Novice
30. august 2004 - 09:54 #1
Umiddelbart vil jeg importere data til Access, og herefter lave en rapport der grupperer og opsummerer på f.eks. Afd.
Avatar billede bak Forsker
30. august 2004 - 16:31 #2
avanceret filter kombineret med datavalidering kan gøre det.
Det er desværre ikke pokkers dynamisk, men det kan 2-3 kodelinier gøre noget ved :-)
Avatar billede bak Forsker
30. august 2004 - 18:01 #3
Avatar billede mr.handstand Novice
30. august 2004 - 19:55 #4
Bak - det ser ud til du har gjort det igen. Jeg vil lige tygge lidt på det med kriteriet, men det er jo bare at kigge nærmere på din virkeliggørelse af mit beskrevne eksempel. Pointene kommer lige så snart jeg har overført din løsning til mit eget ark. Takker!
Avatar billede bak Forsker
30. august 2004 - 20:02 #5
det er fint. eg venter og ser. Ellers må vi drømme noget andet op. :-)
Avatar billede mr.handstand Novice
03. september 2004 - 09:42 #6
Nu har jeg fået dit eksempel til at virke. Det tog mig lige et øjeblik at greje, at du havde skrevet overskriften fra én af kolonnerne i først celle af CopyToRange ( i celle I20 i eksemplet fra URL'en ovenfor, for at kopieringen kun medtog denne kolonne i destinationsområdet.

Sub GetUniqListOfSoftwareID()
    Range(Cells(20, 1), Cells(20, 1).End(xlDown).Offset(0, 3)).AdvancedFilter _
        Action:=xlFilterCopy, CriteriaRange:=Range("A1").CurrentRegion, _
        CopyToRange:=Range("I20"), Unique:=True
End Sub

Tak for hjælpen bak,
bak, sætter du venligst et svar ind.
Avatar billede bak Forsker
04. september 2004 - 00:23 #7
håber det hjalp dig videre :-)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester