Avatar billede noex Nybegynder
09. oktober 2012 - 11:21 Der er 17 kommentarer og
1 løsning

Beregning af alder (år) baseret på 10 cifret cprnr.

I kolonne A har jeg nogle CPR-numre. Formatet er "standard", dvs. en celle uden noget bestemt talformat.

- Jeg benytter 10 cifre

- Jeg benytter "-"-separator efter de første 6 cifre.

- I visse tilfælde har jeg ikke de sidste fire cifre. I disse tilfælde anføres "XXXX" som de sidste fire cifre.

Eksempler på de to mulige udseender: 123456-1234 eller 123456-XXXX

I kolonne B vil jeg gerne have vist alder i år pr. cprnr. Hvordan skal formlen se ud?
Avatar billede vejmand Juniormester
09. oktober 2012 - 11:43 #1
Prøv denne: =RUND.NED((IDAG()-DATO(MIDT(A1;5;2);MIDT(A1;3;2);VENSTRE(A1;2)))/365;0)
Avatar billede vejmand Juniormester
09. oktober 2012 - 11:46 #2
09. oktober 2012 - 11:50 #3
Det er ikke helt så enkelt.
For at beregne alle korrekt skal det 7. ciffer anvendes, da det der dette ciffer, der fortæller hvilket århundrede personen er født i.
Med ovennævnte formel vil Excel sætte alle århundreder til "1900". En person med cpr-nr. "260400-1234" vil være 112 år.
Avatar billede vejmand Juniormester
09. oktober 2012 - 11:58 #4
Som du også kan se i linket.  :-)
Avatar billede noex Nybegynder
09. oktober 2012 - 12:11 #5
@vejmand: tak for formlen. Det virker umiddelbart fint på alle de cprnr., der p.t. findes i registret.

@erikjuul: aha, der kan man se... har du et bud på en løsning til den optimale formel? Hvis 7. ciffer signalerer århundrede, så vil jeg kunne komme i situationer, hvor det ikke er muligt at afgøre, hvilken århundrede vedkommende er født i, idet de sidste fire cifre i mit register kan være ukendt. Men det er jo blot et vilkår...

Er spændt på at se et bud på en opdateret formel ;-)
09. oktober 2012 - 12:16 #6
Det kommer jo helt an på hvad det er for personers cprnr, der er registreret.

Excel kan ikke gætte på hvad resultatet skal være!
MEN du kan opsætte en regel for at hvis personen er under f.eks. 1, 5 eller 12 år skal der lægges 100 år til alderen.
Avatar billede vejmand Juniormester
09. oktober 2012 - 12:23 #7
Måske:
=HVIS(RUND.NED((IDAG()-DATO(MIDT(A1;5;2);MIDT(A1;3;2);VENSTRE(A1;2)))/365;0)>100;RUND.NED((IDAG()-DATO(MIDT(A1;5;2);MIDT(A1;3;2);VENSTRE(A1;2)))/365;0)-100;RUND.NED((IDAG()-DATO(MIDT(A1;5;2);MIDT(A1;3;2);VENSTRE(A1;2)))/365;0))
Avatar billede vejmand Juniormester
09. oktober 2012 - 12:25 #8
Min formel gør det modsatte af erikjuul's forslag.
Min går ud fra, at ingen er over 100 år.....
Avatar billede store-morten Ekspert
09. oktober 2012 - 12:36 #9
Måske:

=HVIS(ÅR(IDAG())-(1900+MIDT(A1;5;2))>100;ÅR(IDAG())-(1900+MIDT(A1;5;2))-100;ÅR(IDAG())-(1900+MIDT(A1;5;2)))

Hvis ingen er over 100 år.....
Avatar billede noex Nybegynder
09. oktober 2012 - 12:38 #10
Jeg forventer, at personerne i registret vil falde i kategorien "voksne mennesker i den arbejdsdygtige alder". Ja, ja... det er selvsagt ikke skide præcist ;-) Jeg forventer at nedre grænse vil være omkring 15 år og den øvre grænse omkring 80 år... Hvilken formel vil I anbefale, at jeg benytter?
Avatar billede vejmand Juniormester
09. oktober 2012 - 12:42 #11
=RUND.NED((IDAG()-DATO(MIDT(A1;5;2);MIDT(A1;3;2);VENSTRE(A1;2)))/365,25;0)
Hvis ingen er over 100, og alle er født før 2000

Ellers:
=HVIS(RUND.NED((IDAG()-DATO(MIDT(A1;5;2);MIDT(A1;3;2);VENSTRE(A1;2)))/365,25;0)>100;RUND.NED((IDAG()-DATO(MIDT(A1;5;2);MIDT(A1;3;2);VENSTRE(A1;2)))/365,25;0)-100;RUND.NED((IDAG()-DATO(MIDT(A1;5;2);MIDT(A1;3;2);VENSTRE(A1;2)))/365,25;0))

Har lige rettet lidt til....
Avatar billede vejmand Juniormester
09. oktober 2012 - 12:48 #12
Sorry, forkert beskrivelse.

Hvis alle er født før år 2000
=RUND.NED((IDAG()-DATO(MIDT(A1;5;2);MIDT(A1;3;2);VENSTRE(A1;2)))/365,25;0)

Hvis ingen er over 100
=HVIS(RUND.NED((IDAG()-DATO(MIDT(A1;5;2);MIDT(A1;3;2);VENSTRE(A1;2)))/365,25;0)>100;RUND.NED((IDAG()-DATO(MIDT(A1;5;2);MIDT(A1;3;2);VENSTRE(A1;2)))/365,25;0)-100;RUND.NED((IDAG()-DATO(MIDT(A1;5;2);MIDT(A1;3;2);VENSTRE(A1;2)))/365,25;0))

Så jeg vil anbefale den lange i dit tilfælde.....
Avatar billede noex Nybegynder
09. oktober 2012 - 14:31 #13
Jeg bruger den lange! Tak for jeres hjælp! Det er meget værdifuldt for mig med jeres hjælp!

Jeg tænker, at I skal have nogle point begge to. Vil I lave et svar, så jeg kan give point? Pft. ;-)
Avatar billede vejmand Juniormester
09. oktober 2012 - 15:36 #14
Velbekomme, svar kommer her.  :-)
Avatar billede Slettet bruger
09. oktober 2012 - 18:31 #15
vejmand - jeg er ikke skråsikker, men har på fornemmelsen at der er et lille problem med din formel:

For eksempel for 131196-1830 returnerer den 15.

Jeg har bakset med følgende:

=ÅR(IDAG())-HVIS(--MIDT(A4;FIND("-";A4;1)+1;1)>=4;20&MIDT(A4;FIND("-";A4;1)-2;2);19&MIDT(A4;FIND("-";A4;1)-2;2))

Heller ikke her er jeg skråsikker, men den returnerer i hvert fald 16.

Hans
Avatar billede vejmand Juniormester
09. oktober 2012 - 18:52 #16
En person født d. 13. november 1996 er vel ikke fyldt 16 endnu, eller hvad?
Avatar billede Slettet bruger
09. oktober 2012 - 19:28 #17
Undskyld!
Den kunne jeg have undgået.
Hans
Avatar billede vejmand Juniormester
09. oktober 2012 - 19:34 #18
He he, det er bare ok.  :-)
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