Avatar billede masuda Juniormester
07. maj 2019 - 14:45 Der er 12 kommentarer og
1 løsning

Beregn alder ud fra CPR nummer (formateret som tal)

Jeg har brug for en kolonne der viser alderen på alle personer på en liste.
Kolonnen med CPR numre er formateret som CPR nummer 0x xx xx-xxxx.
Jeg bruger følgende formel:
=HVIS((RUND.NED((Input!$O$5-DATO(MIDT([@[cpr]];5;2);MIDT([@[cpr]];3;2);VENSTRE([@[cpr]];2)))/365,25;0))>100;((RUND.NED((Input!$O$5-DATO(MIDT([@[cpr]];5;2);MIDT([@[cpr]];3;2);VENSTRE([@[cpr]];2)))/365,25;0))-100);(RUND.NED((Input!$O$5-DATO(MIDT([@[cpr]];5;2);MIDT([@[cpr]];3;2);VENSTRE([@[cpr]];2)))/365,25;0)))

Problemet er at alle personer der har fødselsdag 1. til 9. i måneden får en forkert alder, da det foranstillede 0 ikke tæller med i "MIDT".

Er der mon en der kan komme med et bud på hvordan jeg kan rette min formel til?

Pft!
Avatar billede h_s Forsker
07. maj 2019 - 15:09 #1
Hvad har du stående i "Input!O5?
Hvad har du stående i "Cpr" - Går ud fra det er CPR nr.
Er der mellemrum mellem dage måned og år?
Hvis du formaterede cellerne til 000000-0000, vil der så ikke stå et "0" forrest?
Avatar billede Dan Elgaard Ekspert
07. maj 2019 - 15:31 #2
Avatar billede h_s Forsker
07. maj 2019 - 15:42 #3
Dan> din funktion virker :-) Men er er nødt til at slette alle dine mellemrum først...
Avatar billede masuda Juniormester
08. maj 2019 - 09:26 #4
#1 h_s:
I "input!O5" har jeg den dato jeg skal kende alderen for, da det er er dags dato.
Det ændrer ikke noget at formateringen bliver 000000-0000, det er stadig blot en formatering og derfor en måde vi ser tallet på. Når Excel regner på cellen er det stadig uden for foranstillede 0 for fødselsdage mellem 1. og 9. i måneden.

#2
Jeg har desværre ikke funktionen dato.forskel i min version af Excel - desværre, jeg havde ved en google søgning været omkring din side.

Tak for input begge to. Jeg håber fortsat på en løsning!
Avatar billede Dan Elgaard Ekspert
09. maj 2019 - 08:28 #5
#3: Ja, der er indlagt mellemrum, for, at gøre formlen mere overskuelig - men, naturligvis er man nødt til, at undlade mellemrum :-)

http://www.EXCELGAARD.dk/Bib/FAQ/Formler/
Avatar billede Dan Elgaard Ekspert
09. maj 2019 - 08:31 #6
#4: Jo, du har DATO.FORESKEL() i din EXcel.

Funktionen har været der siden første udgave af Excel, for at styrke kompatibiliteten med 'Lotus 1-2-3'.

http://www.EXCELGAARD.dk/Bib/Regnearksfunktioner/DATO.FORSKEL/

Hvilken version og sprog-udgave af Excel benytter du?

Har du prøvet min formel?
Har du husket, at fjerne mellemrum fra min formel?
Avatar billede masuda Juniormester
14. maj 2019 - 10:41 #7
#6
Jeg har googlet funktionen, og jeg kan se at jeg burde have den. Det ændrer bare ikke ved, at den ikke er tilgængelig. Når jeg skriver =dato, er de mulige funktioner som Excel foreslår: "DATO" og "DATOVÆRDI" - jeg får ikke andre muligheder.
Hvis jeg vælger kategorien "Dato og klokkeslæt" i "indsæt funktion vinduet", er den ligeledes ikke tilgængelig. Så det er muligt at jeg burde have den - men jeg har den ikke. Jeg kan derfor desværre ikke bruge din formel.
Men tak for input.
Avatar billede Dan Elgaard Ekspert
14. maj 2019 - 12:01 #8
Jo, funktionen _ER_ der - hvis du har læst den artikkel, som jeg henviser til:

http://www.EXCELGAARD.dk/Bib/Regnearksfunktioner/DATO.FORSKEL/

...vil du se, at funktionen ikke er understøttet, og derfor ikke viser sig i funktionslisten - men, funktionen _ER_ der - du skriver blot formlen, og det vil virke.
Avatar billede masuda Juniormester
14. maj 2019 - 14:17 #9
#8
Tak - men den melder fejl på formlen, da CPR nummeret jo ikke er formateret som dato, men som CPR nummer.
Avatar billede Dan Elgaard Ekspert
14. maj 2019 - 15:56 #10
Det har intet med dette, at gøre, men fordi, du ikke har tilrettet formel (mellemrum og argumentet separatorer).

Se #3: Han fik den til, at virke.

Se #5: Hvordan man tilretter formlen.
Avatar billede masuda Juniormester
06. juni 2019 - 15:19 #11
Så kom jeg tilbage til opgaven igen. Nu har jeg fået Excel til at godtage formlen du har linket til  i #3. Men hver gang barnet er født i år 2000 og frem bliver alderen 100 år for høj. Dvs. at alle født i 19xx har korrekt alder, mens alle født i 20xx er 100 år for gammel.
Jeg har rettet i formlen: så den første ventre(højre) > 4 og den næste er <= 9 (se nedenfor) - så virker den hos mig.
= DATO.FORSKEL ( DATO ( HVIS ( OG ( ELLER ( VENSTRE ( HØJRE ( A1 ; 4 ) ; 1 ) * 1 > 4 ; VENSTRE ( HØJRE ( A1 ; 4 ) ; 1 ) * 1 <= 9 ) ; VENSTRE ( HØJRE ( A1 ; 6 ) ; 2 ) * 1 < 37 ) ; 2000 ; HVIS ( OG ( VENSTRE ( HØJRE ( A1 ; 4 ) ; 1 ) * 1 > 4 ; VENSTRE ( HØJRE ( A1 ; 6 ) ; 2 ) * 1 > 57 ) ; 1800 ; 1900 ) ) + ( VENSTRE ( HØJRE ( A1 ; 6 ) ; 2 ) * 1 ) ; VENSTRE ( HØJRE ( A1 ; 8 ) ; 2 ) * 1 ; VENSTRE ( TEKST ( A1 ; "0000000000" ) ; 2 ) ) * 1 ; IDAG() ; "y" )

1000 tak for hjælpen!
Avatar billede Dan Elgaard Ekspert
07. juni 2019 - 09:20 #12
Godt du fandt ud af det :-)
Avatar billede Dorthe Novice
26. januar 2023 - 16:02 #13
Hej Dan - eller hvem end som kan hjælpe,

Jeg søger en formel som kan beregne alder ud fra cpr. uanset om cpr. nr. er formateret som tal eller tekst. Dvs. formlen skal være uanset om der er foranstillet 0 eller ej: Dvs. uanset om personer født mellem den 1. og 9. i måneden vises med 9 eller 10 chifre i deres cpr. nr.

Det kunne være super fedt, hvis det lykkes. Tak for din indsats!
Bh.
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