Avatar billede amiedk Nybegynder
02. september 2003 - 12:54 Der er 4 kommentarer og
1 løsning

udregn ud fra cpr nr

Hejsa

Ud fra http://www.eksperten.dk/spm/393744 virkede det helt fint, men nu vil bossen have hele cpr nr med .. xxxxxx-xxxx.

Funktionen jeg bruger er et alder felt med =100-HØJRE(H2;2)+3. Virker helt fint, men ikke når der kommer -xxxx mere på. Kan man lave noget fikst ?? eller kan det slet ikke lade sig gøre ??

Sommerhilsner
Malene
02. september 2003 - 12:59 #1
=100-VENSTRE(HØJRE(H2;7);2)

Beregner ud fra samme kriterier som i dit tidligere spørgsmål.

Altså med udgangspunkt i årstallet, og kun årstallet - og uden hensyntagen til århundrede.
02. september 2003 - 13:02 #2
=100-VENSTRE(HØJRE(H2;7);2)+3

glemte +3
02. september 2003 - 13:05 #3
Hvis du i stedet for at lægge 3 til lægger de sidste 2 cifre fra årstallet til, behøver du ikke at korrigere formlen ved årsskifte.

=100-VENSTRE(HØJRE(A1;7);2)+HØJRE(ÅR(IDAG());2)

Denne virker også i årene fremoveer.
Avatar billede amiedk Nybegynder
02. september 2003 - 13:07 #4
ej du er bare en super skat.. det virker bare helt perfekt :)

Malene
Avatar billede jkrons Professor
02. september 2003 - 14:13 #5
I forlængelse af erikjuuls løsning er her en funktion, der automatisk finder århundredet ud fra 7 ciffer i cpr-nummert og beregner alderen.

Kopier den til et modul. Såkan du bare skrive =cpralder(a1), (hvis cpr-nummer står i A1).

Den kræver at cellen med cpr-nummer er formateret som tekst:

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
If Not IsNull(cpr) Then

    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 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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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

IT-JOB

Styrelsen for Grøn Arealomlægning og Vandmiljø

Teamleder til Application Management

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Ingeniør til Satellitkommunikation

Capgemini Danmark A/S

IGNITE Graduate Program 2026