• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Rijksregisternummer omvormen naar geboortedatum

Status
Niet open voor verdere reacties.

sherpa14

Gebruiker
Lid geworden
26 okt 2004
Berichten
232
In een excel-bestand (excel2010) staat in een kolom het rijksregisternummer. dit is een getal bestaande uit 11 cijfers waarvan de eerste 2 cijfers het geboorte jaartal aangeven, de derde en vierde cijfer geven de maand aan en de vijfde en zesde cijfers geven de dag aan.
Op welke wijze kan ik dit getal van 11 cijfers (waarvan de eerste 6 maar van nodig zijn) omvormen tot een datum die de geboortedatum aangeeft in de vorm van dd/mm/jjjj
 
=DATUM(LINKS(A1;2);DEEL(A1;3;2);DEEL(A1;5;2))

Zou moeten lukken.
 
Code:
=TEXT(TEXT(LEFT(A1;6);"20##-##-##");"dd-mm-jjjj")
 
Laatst bewerkt:
14030124125

Wat wil je hier voor een resultaat zien?
10-03-1914 of 01-03-2014

Zonder duidelijk uitleg wanneer je het als eeuwwisseling ziet zullen beide gegeven oplossingen niet altijd het juist verwachte resultaat geven
 
Er leven nog hooguit 16 100-jarigen en die gegevens worden met de hand aangepast. :)
 
Als ik deze link http://nl.wikipedia.org/wiki/Rijksregisternummer lees is mijns inziens de enige oplossing van elk RR het controlegetal te verifieëren met de geijkte formule.
Als het controlegetal klopt heb je een datum in 1900, klopt het controlegetal niet met de geijkte formule (aangezien je voor personen geboren in 2000 of later een 2 moet toevoegen alvorens de berekening te maken) heb je een geboortedatum in 2000.
Het zal dus heel wat rekenkracht vragen als je een groot aantal RR-nummers wil omvormen.
 
of

=TEXT(TEXT(LEFT(A1;6);if(left(A1;2)>14;"19";"20")&"##-##-##");"dd-mm-jjjj")


PS. Het lijkt of onze Sherpa terug is gegaan naar het basiskamp.
 
Laatst bewerkt:
Terug van het basiskamp :cool:
resultaat met =TEXT(TEXT(LEFT(A1;6);if(left(A1;2)>14;"19";"20")&"##-##-##");"dd-mm-jjjj") geeft : #naam? (ik heb de formule iets moeten wijzigen gezien dhet eerste rijksregisternummer begint in cel C11
Ook =DATUM(LINKS(A1;2);DEEL(A1;3;2);DEEL(A1;5;2)) geeft hetzelfde resultaat. (ook hier is de A1 vervangen door C11)

Ook =GeboorteDag(C11) geeft hetzelfde resultaat
De celeigenschap van de cel waar de geboortedatum in komt is ingesteld als dd/mm/jjjj

in elk geval zullen het allemaal jaartallen zijn die beginnen met 19xx, gezien onze medewerkers meer dan 18 jaar zijn.
 
Laatst bewerkt:
met het bestand"geboorteDat uit nummer.xlsm" waarbij de functie =GeboorteDag(...) wordt gebruikt is OK zolang dit gebruikt wordt in het desbetreffende bestand. echter wanneer de formule gekopieerd wordt is het resultaat terug #naam?

Ook krijg ik hetzelfde resultaat wanneer ik het tabblad naar het betand kopieer waar de gegevens in staan.

Ik kan trouwens de functie =GeboorteDag niet terugvinden in de lijst van functies.
 
Als eens aan vertalen gedacht ?

=TEksT(TEksT(Links(A1;6);"19##-##-##");"dd-mm-jjjj")

Als de cel inderdaad op dd-mm-jjjj staat:

=1*TEksT(Links(A1;6);"19##-##-##"))
 
Laatst bewerkt:
Perfect. Dit is de oplossing. dit zal me heel wat tijd sparen. en kan ik terug naar het basiskamp ;)


Bedankt. ik zet de status op "opgelost".
 
Laatst bewerkt:
reactie op post 11.
Code:
Function GeboorteDag(Nr As String)
    Dim Jaar As String, Maand As String, Dag As String, C As String, Temp
    If Len(Nr) <> 11 Then GeboorteDag = "lengte van nummer is fout": Exit Function
    Temp = Mid(Nr, 1, 9)
    Jaar = Mid(Nr, 1, 2)
    Maand = Mid(Nr, 3, 2)
    Dag = Mid(Nr, 5, 2)
    C = Mid(Nr, 10, 2)
    Temp = 97 - (Temp - Int(Temp / 97) * 97)
    If Temp - C = 0 Then
        GeboorteDag = DateSerial("19" & Jaar, Maand, Dag)
    Else
        Temp = Mid("2" & Nr, 1, 10)
        Temp = 97 - (Temp - Int(Temp / 97) * 97)
        If Temp - C = 0 Then
            GeboorteDag = DateSerial("20" & Jaar, Maand, Dag)
        Else
            GeboorteDag = "nummer is niet in orde"
        End If
    End If
End Function
dus :
druk alt F11 in
ga naar ThisWorkbook
rechter muisknop
invoegen module
in die module plak je de code van hier boven
dan staat hij wel bij de excel functies.
 
Laatst bewerkt:
@ Sylvester

Waar je in jouw functie geen rekening mee gehouden hebt is het feit dat de mogelijkheid bestaat dat het controlegetal uit jouw berekening 0 kan zijn maar het controlecijfer bij het nummer 97 is.
In dat geval heb je ook te maken met een geldig RR-nummer.
 
Het kan voorvallen (uiterst zelden maar toch) dat de berekening 97 - (basisgetal mod 97) als resultaat 0 geeft terwijl het controlegetal v/h RR-nr 97 is.
In dat geval is het een geldig RR-nr.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan