/ Forside/ Teknologi / Administrative / MS-Office / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
MS-Office
#NavnPoint
sion 18709
refi 14474
Klaudi 9389
Rosco40 5695
berpox 5456
dk 5398
webnoob 4919
Benjamin... 4870
o.v.n. 4637
10  EXTERMINA.. 4373
Excel
Fra : brokke44
Vist : 6798 gange
300 point
Dato : 08-09-07 15:00

Jeg har en medlemsliste i et excel-ark.
En af kolonnerne er medlemmets personnummer.
Kan man med baggrund i dette personnummer lave en kolonne, der altid viser medlemmets alder - opdateret i forhold til dags dato.
Jeg kan ikke gennemskue formlen, der skal bruges. Eller kan det slet ikke lade sig gøre ?

 
 
Kommentar
Fra : tusneldaTusindfryd


Dato : 08-09-07 15:22

Jeg ville indsætte en hjælpe-kolonne kun med fødsesdatoen. Og derefter bruge formlen på dette link: http://www.exceltip.com/st/Working_Out_a_Person's_Age_in_Microsoft_Excel/634.html

Kommentar
Fra : refi


Dato : 08-09-07 15:48

Citat
En af kolonnerne er medlemmets personnummer.



Uha da da.....

Har du tilladelse til at "gemme" personnumre.....

Hvis du nøjes med fødselsdag som allerede nævnt er det meget nemmere.....

Kommentar
Fra : brokke44


Dato : 08-09-07 16:08

Citat
Har du tilladelse til at "gemme" personnumre

Ja, naturligvis.
Kan godt se på tippet, at det vil være nemmest (rent formelmæssigt) med fødselsdato, men det ville betyde manuel indtastning af mere end 1000 poster - eller ?

Kommentar
Fra : Rosco40


Dato : 08-09-07 19:22

Denn e funktion beregner alderen af et cpr-nummer og tager også højre for århundredet:

Kode
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


Læg den ind i et modul. I arket bruger du den sådan: cpralder(a1), hvor cpr-nummeret står i A1. Dwen forventer at cpr-nummeret er indtastet med bindestreg, fx 121212-1212

Kommentar
Fra : brokke44


Dato : 08-09-07 21:39

Rosco40
Tak skal du ha', det var en ordentlig mundfuld - Jeg troede, at jeg kunne nøjes med en "simpel" excelformel.
Men det virker meget godt med modulet lavet i Visual Basic - DOG hvis du indtaster personnummer f.eks. 070960-xxxx er resultatet 46 år, selvom vedkommende rent faktisk lige er blevet 47 år.
En pudsighed ? eller er der en fornuftig forklaring på dette ?

Kommentar
Fra : brokke44


Dato : 08-09-07 22:00

tusnelda Tusindfryd.

Linket er sådan set meget godt, men de engelske formelværdier svarer ikke til dansksprogede excelversioner - Jeg kan godt finde ud af at "today" skal være "idag", men hvad med "int" ?

Kommentar
Fra : zakia1964


Dato : 08-09-07 23:15

Hej Brokke44
Jeg har engang lavet en hjemmelavet formel netop til formålet. I en celle (f.eks. C4) ved siden af cellen med Cpr.nr. (her B4) har jeg skrevet denne formel for at udtrække datoen af cpr-nummeret.
=VENSTRE(B4;2)&"-"&(MIDT(B4;3;2)&"-"&(MIDT(B4;5;2)))
Det er vigtigt at formatere cellen med denne formel i dato-format (f.eks. 08-09-07)
I celle B1 har jeg skrevet formlen =IDAG() som refererer dags dato.
Når jeg så vil beregne personens alder laver jeg denne formel:
=($B$1-C4)/365
Her trækker jeg de to datoer fra hinanden og dividerer med 365. Cellen hvor denne beregning finder sted skal formateres som tal med 2 decimaler så Excel returnerer 070960-xxxx med resultatet 47,03

Kommentar
Fra : zakia1964


Dato : 08-09-07 23:19

Hej igen!
Hvis du ikke vil have 2 decimaler men kun alderen i år kan du lave denne formel:
=RUND.NED(($B$1-C4)/365;0) i stedet for formlen =($B$1-C4)/365

Kommentar
Fra : brokke44


Dato : 09-09-07 09:38

zakia1964

Ja, det var jo noget nemmere at håndtere. Ulempen her bliver de hjælpeceller, der skal til at få det til at fungere, men de kan jo skjules.
Lige een ting: Man skal vel dividere med 365,25 for at tage højde for skudår - ikk' ?

Kommentar
Fra : Rosco40


Dato : 09-09-07 10:16

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

Kommentar
Fra : zakia1964


Dato : 09-09-07 10:23

Ja ellers går det galt hvis datoen er 28-02-08 og personen er født 29-02-1968. Men så vidt jeg er orienteret, indeholder ingen Cpr.nr datoen 29/2! Jeg har en veninde der er født 29/2-1960 - men hendes cpr.nr. lyder 280260-xxxx. Så jeg mener kun at detaljen 365,25 skal bruges såfremt man ønsker at tælle dage og kun hvis man tager udgangspunkt i aktuel fødselsdato.

Kommentar
Fra : zakia1964


Dato : 09-09-07 10:28

Hej Rosco40
Smart formel - men en person med f.eks. cprnr 111264-xxxx får alderen 43 år selvom vedkommende kun er 42 endnu.

Accepteret svar
Fra : Rosco40

Modtaget 300 point
Dato : 09-09-07 10:36

=RUND.NED((IDAG()-DATO(MIDT(A1;5;2);MIDT(A1;3;2);VENSTRE(A1;2)))/365;0)

Kommentar
Fra : brokke44


Dato : 09-09-07 10:40

Jeg tror nu, at jeg vil bruge modulformlen, selvom den åbenbart har nogle "svagheder".
Vi er flere brugere på denne medlemsliste. Nogle brugere definerer personnummer som xxxxxxxxxx
altså uden bindestreg. Er der et godt tip til at formatere cellen til at udlæse personnummeret som xxxxxx-xxxx altid ?


Kommentar
Fra : zakia1964


Dato : 09-09-07 10:42

Der var den Rosco40! og uden hjælpeceller! Den husker jeg lige.

Kommentar
Fra : zakia1964


Dato : 09-09-07 10:44

I Excel 2003 er der en celleformatering der hedder Personnummer under Speciel

Kommentar
Fra : brokke44


Dato : 09-09-07 10:57

Ja, den kender jeg - men prøv lige at skrive 0909602425 - så udelades nullet, selvom definationen hedder ######-#### - og så duer formlen jo ikke ?

Kommentar
Fra : zakia1964


Dato : 09-09-07 11:20

Ja det har du faktisk ret i. Det kan måske betale sig at lave en datavalidering på de celler der skal indtastes cpr.nr. i så folk bliver gjort opmærksom på at der skal laves en bindestreg.


Godkendelse af svar
Fra : brokke44


Dato : 09-09-07 11:24

Fornemt Rosco40 - mange tak

Den sidste excelformel virker uanset hvad indgangsargumentet er. Den virker endda på færøske medlemmer (som jo ikke har personnumre, som vi).

Jeg sender også points til Zakira - med tak for indsatsen - på en ny tråd

Kommentar
Fra : Rosco40


Dato : 09-09-07 11:34

Glæder mig at kunne hjælpe.

Kommentar
Fra : brokke44


Dato : 09-09-07 11:46

Til slut !

Vil dog - stadig - mene, at der skal divideres med 365,25 aht skudår - har testet det på fødselsdatoer omkring d.d. og så bliver det "mere" korrekt.

Igen stort tak til jer begge.

Kommentar
Fra : tmac


Dato : 10-12-07 23:51

Citat
=RUND.NED((IDAG()-DATO(MIDT(A1;5;2);MIDT(A1;3;2);VENSTRE(A1;2)))/365;0)


Rosco40, ved du hvordan man evt kan smække den ind i en autofill i en vba kode, for at få den til at ændre A1'erne automatisk til A2 osv..?

Kommentar
Fra : Rosco40


Dato : 11-12-07 19:32

Nej! men Kigger på det.

Kommentar
Fra : tmac


Dato : 11-12-07 22:56

Okay, lyder virkelig godt ! :)

Kommentar
Fra : Excelhajen


Dato : 12-12-07 12:19

Årstal   2007
3009690808   38,00

Hejsa det er faktisk muligt med en simpel formel

Årstallet indtastes i celle B1 CPR nummer i A2
+(100-(VENSTRE( HØJRE(A2;6);2)))+(B1-2000)

Mvh Ole Myrup



Kommentar
Fra : tmac


Dato : 13-12-07 22:26

Citat
Årstallet indtastes i celle B1 CPR nummer i A2
+(100-(VENSTRE( HØJRE(A2;6);2)))+(B1-2000)


Excelhajen; det virker fint :)

Men sidder og roder lidt med en lang CPR-Nr. liste jeg har, og ud fra den vil jeg gerne have den automatisk kan smide en alder i en "alder" kolonne ud fra en beregning den laver på CPR-Nr... :)
Så jeg har en løkke hvor den kører igennem, og plotter alder ind efterhånden..

Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177424
Tips : 31962
Nyheder : 719565
Indlæg : 6407908
Brugere : 218877

Månedens bedste
Årets bedste
Sidste års bedste