Avatar billede moltov Nybegynder
07. marts 2005 - 13:47 Der er 9 kommentarer og
2 løsninger

Fejl i formel i Excel

Hejsa

Jeg har en formel som jeg bruger, når jeg skal udregne alder fra personnummer. Problemet er at hvis personen er født før 1930 så siger den en minusalder.

Formlen er =(IDAG()-(VENSTRE(A12;2)&"-"&MIDT(A12;3;2)&"-"&MIDT(A12;5;2)))/365)


Hvad er fejlen? HJÆLP!!! :-)
Avatar billede tobler Nybegynder
07. marts 2005 - 14:13 #1
Prøv med denne: =(IDAG()-DATO(MIDT(A12;5;2);MIDT(A12;3;2);VENSTRE(A12;2)))/365
Avatar billede moltov Nybegynder
07. marts 2005 - 14:14 #2
JA SKU! Tak ;-)

Kunne man sende en øl over nettet så gjorde jeg det ;-)

Moltov
Avatar billede b_hansen Novice
07. marts 2005 - 14:19 #3
Problemet er, at årstallet kun er angivet med 2 tal. Prøv at bygge følgende test på:

=HVIS(VÆRDI(MIDT(A12;7;1))<5;IDAG()-(VENSTRE(A12;2)&"-"&MIDT(A12;3;2)&"-19"&MIDT(A12;5;2)))/365;IDAG()-(VENSTRE(A12;2)&"-"&MIDT(A12;3;2)&"-20"&MIDT(A12;5;2)))/365)
Avatar billede b_hansen Novice
07. marts 2005 - 14:19 #4
hov... sorry tobler

Du gav en anden løsning først, så pointene er naturligvis dine
Avatar billede b_hansen Novice
07. marts 2005 - 14:24 #5
nu ved jeg ikke, hvor relevant det er. Men din formel tager ikke hensyn til personer født før 1. januar 1900
Avatar billede moltov Nybegynder
07. marts 2005 - 14:27 #6
Hmm, nej det tror jeg ikke, at jeg skal bruge. Tobler send lige et svar så du kan få pointene ;-)

Men da jeg nok også vil "lege" lidt med B Hansens forslag, så får han en "bette" smule, hvis det er okay? :-)

Moltov
Avatar billede falster Ekspert
07. marts 2005 - 14:28 #7
Lidt i samme boldgade. Jeg kender én som fik tvillinger i søndags. Hva' siger formlen til det.

Forklaringen ligger vist dels i Excels formatopbygning - citat fra hjælpen

"Ændre standarddatoformat
Når du indtaster datoer i en projektmappe, formateres datoerne som standard til tocifrede årstal.

Ændre den måde, det tocifrede årstal fortolkes

Advarsel!  Denne procedure ændrer den måde, de tocifrede år fortolkes for alle de Microsoft Windows-programmer, du har installeret.

Peg på Indstillinger i menuen Start, og klik derefter på Kontrolpanel.
Dobbeltklik på ikonet International: eller Internationale indstillinger .
Tilpas den øvre grænse for århundredet i boksen Når et tocifret årstal bliver indtastet, fortolkes det som et årstal mellem:.
Når du ændrer årstallet for den øvre grænse, ændres også årstallet for den nedre grænse."

og i logikken omkring cpr. Se dette

http://www.cpr.dk/imagesupload/dokument/Skema%20over%20personnummerets%20opbygning.pdf
Avatar billede tobler Nybegynder
07. marts 2005 - 14:30 #8
Her er et svar.-)

Jeg ved heller ikke, hvordan man udfra CPR-nummeret kan skelne mellem dette og sidste århundrede. Gad vide, om det er derfor at checkcifferet skal fjernes.
Avatar billede tobler Nybegynder
07. marts 2005 - 14:37 #9
---> falster - Tak for linket, det bookmarkes straks:-)
Avatar billede b_hansen Novice
07. marts 2005 - 14:38 #10
tjekket på århundredet foregår på første ciffer efter årstallet. Er det under 5, er personen født mellem 1900-1999. Er det større end eller lig med 5, så er personen født enten 1800-1899 eller 2000-2099. Så vidt jeg husker, kan det sidste kontrolleres på det sidste ciffer....
Avatar billede jkrons Professor
07. marts 2005 - 14:50 #11
Man kan i dag sagtens skelne mellem 18xx, 19xx og 20xx.- Det gøres ved hjælp af 7. ciffer sammenhold med 5 og 6 (årstallet). Nedenstående funktion beregner alderen og tager højre for århundret.

Er 7. ciffer 0, 1 eller 3 er man altid født i 19xx.
Er 7. ciffer 4 eller 9, og årstallet mindre end eller lig 36 er man født i 20xx.
Er 7. ciffer 4 eller 9 og årstallet større end 36 er man født i 19xx
Er 7. ciffer 5, 6, 7 eller 8 og årstaller mindre end eller = 36 er man født i 20xx.
Er 7. ciffer 5, 6, 7 eller 8, og årstallet større end eller lig 58, er man født i 18xx.
Cpr-numre med årstal 37 til 57u og 7. ciffer 5,6,7 eller 8 eksiterer ikke.

I 2036 skal systemet skiftes ud, da det så ikke længere vil vuirke i den nuværende form. Når man taler om at afskaffe checkcifret, skyldes et et andet forhold, nemlig at der af og til bliver født flere børn på en dag, end der er cpr-numre til. trecifrede løbenumre er derfor ikke altid nok, og så overvejder man at afskaffe modulus 11 kontrollen, og indføre 4.cifrede løbenumre.



Function CprAlder(cpr As String) As Byte
'JKrons, 2002
'Finder fødsels-århundredet ud af
'et cpr-nummer på formen xxxxxx-xxxx
'Den virker kun indtil 2036, hvor cpr-nummersystemet i
'dets nuværende form ophører med at fungere
'se nærmere på www.cpr.dk

    Dim bytCent As Byte
    Dim bytSevdig As Byte
    Dim bytCpryear As Byte
    Dim bytCprmonth As Byte
    Dim bytCprday As Byte
    Dim strErrtxt As String
    Dim datTemp As Date

   
    strErrtxt = "Der eksisterer ikke lovlige cpr-numre, hvor årstallet er "
    bytSevdig = Mid(cpr, 8, 1)
    bytCpryear = Mid(cpr, 5, 2)
    bytCprmonth = Mid(cpr, 3, 2)
    bytCprday = Mid(cpr, 1, 2)
   
    Select Case bytSevdig
        Case 0 To 3
            bytCent = 19
        Case 4, 9
            If bytCpryear <= 36 Then
                bytCent = 20
            Else
                bytCent = 19
            End If
        Case 5 To 8
            If bytCpryear <= 36 Then
                bytCent = 20
                ElseIf bytCpryear >= 58 Then
                bytCent = 18
                Else
                strErrtxt = strErrtxt & bytCpryear & " og 7. ciffer er " & bytSevdig
                MsgBox strErrtxt, vbOKOnly + vbCritical, "CPR-nummer fejl"
                Exit Function
            End If
           
    End Select

    datTemp = DateSerial(bytCent & bytCpryear, bytCprmonth, bytCprday)

    If datTemp > Date Then
        MsgBox "Den pågældende person er ikke født endnu", vbOKOnly + vbExclamation, "CPR-nummer fejl"
        Exit Function
    End If
   
    If Mid(datTemp, 7, 2) = 18 Then
        CprAlder = Right(DatePart("yyyy", Date - datTemp), 2) + 100
        Else
        CprAlder = Right(DatePart("yyyy", Date - datTemp), 2)
    End If
End Function
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