Avatar billede Niki Mouridsen Praktikant
13. oktober 2020 - 11:10 Der er 9 kommentarer

Hjælp til mindre beregningstung metode til optælling af personer fra stort datasæt

Jeg mangler hjælp til at mindske beregningstiden.
DATA består af ca. 200.000 to 500.000 rækker.

Mit datasæt består af:
Periode start; Periode slut; måneds dato; Unik ID; Alder; Kategori
jeg laver allerede en optælling på antal personer (tæl.hviser) som er i en kategori, en given alder og en given dato (dette er stillet op som en matrix med dato ned ad rækkerne og alder hen ad kolonnerne). jeg summer sammen for nogle selvvalgte aldersgrupper eks. 16-24, 25-29 osv for hver dato.
I data kan en person opstå flere gange med forskellige periode start og slut. så for en person kan disse perioder overlappe hinanden.
Jeg vil gerne lave en optælling på hvor mange "fuldtidspersoner" der er for hver dato og alder for i sidste ende at summe over aldersgrupper igen.

Det jeg nu gør er at i data tilføjer jeg 01-01-2020 til 31-01-2020 og indikere hvis den enkelte dag er i perioden start-slut for den person altså en matrix på 31x300.000. Derefter har jeg alle unikke ID i et nyt ark hvor alle dubletter er fjernet og jeg tilføjer 01-01-2020 til 31-01-2020 igen og bruger makshviser som henter maks værdi (1 eller 0) fra data hvis det er den person og den kategori jeg laver optælling for. (det er denne makshviser som er tidskrævende hvad jeg kan se) derefter summer jeg for hver person og dividere med antal dage i måneden og får hvor stor en fuldtidsperson den enkelte er. disse summer jeg hvis personernes alder er i aldersgruppen.

problemet er at dette tager lang tid eftersom jeg kun kan beregne en måned ad gangen hvorimod den første optælling jeg laver kan beregne alle måneder ad gangen.
Det er muligt at sende et regneark hvor det er stillet op (fylder 66 mb)
Avatar billede ebea Ekspert
13. oktober 2020 - 11:20 #1
Kan du prøve at uploade dit Ark. Brug evt.  www.dropbox.com
Avatar billede ebea Ekspert
13. oktober 2020 - 12:20 #3
Hvor mange sekunder er beregningstiden, for den opstilling du bruger nu?
En af de ting som er unødvendig (og forlænger beregningstiden), er at du ikke har sat et fast defineret række antal i dine formler, men bruger Excels max række antal (som er 4 gange så mange som nødvendigt). Og hvis du så holder det op mod de antal celler som beregnes, er det mange (millioner).
Avatar billede Niki Mouridsen Praktikant
13. oktober 2020 - 12:34 #4
I et datasæt hvor jeg kun har medtaget en kategori (ca 40.000 rækker) tager det ca. 60 sekunder at lave en optælling som i arket COUNT 2. Dette giver mig kun resultatet for én måned og effektivt set skal jeg lave denne optælling for 4-5 års data og 8 kategorier samt nogle flere kriterier så dette bliver et stort stykke arbejde som jeg regelmæssigt skal gennemkøre.
Avatar billede ebea Ekspert
13. oktober 2020 - 12:40 #5
#4 - Det lyder noget underligt (med mindre du har en meget sløv PC).
Jeg har lige lavet en test på dine uploadede data, hvor jeg har sat optællingen til 300000 rækker i dine datasæt, og med en lille ændring af din brugte MAXIFS formel. Og den test tager lige godt 2 sekunder at lave.
Avatar billede Niki Mouridsen Praktikant
13. oktober 2020 - 12:46 #6
I arket COUNT 2 celle B2 lyder: =MAKSHVISER(DATA!H$2:H$293174;DATA!$D$2:$D$293174;'COUNT 2'!$A2;DATA!$F$2:$F$293174;'COUNT 2'!$AJ$1)
Her skulle jeg gerne kun have aktuel data.

Der bliver brugt 100% cpu og den køre 12 tråde under beregning.
Avatar billede Niki Mouridsen Praktikant
13. oktober 2020 - 12:47 #7
Undskyld B2 lyder: =MAKSHVISER(DATA!G$2:G$293174;DATA!$D$2:$D$293174;'COUNT 2'!$A2;DATA!$F$2:$F$293174;'COUNT 2'!$AJ$1)
Avatar billede ebea Ekspert
13. oktober 2020 - 13:08 #8
#7 - Er vi enige om, at du vil have returneret max værdien i kolonne G, hvis de 2 andre kriterier er opfyldt (Kolonne D = A2 og Kolonne F = AJ1) ?
Avatar billede Niki Mouridsen Praktikant
13. oktober 2020 - 13:14 #9
Ja i kolonne B i COUNT 2.
COUNT 2 kolonne C skal returnere max værdien i DATA kolonne H hvis de to kriterier er opfyldt osv.
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

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