calcul varsta din data nasterii de tip...
-
- Mesaje: 210
- Membru din: Mie Iun 15, 2011 8:47 pm
Re: calcul varsta din CNP de tip...
Cum se calculeaza data nasterii din cnp?
Re: calcul varsta din data nasterii de tip...
Pai dacă presupunem ca ai CNP-ul in celula A1 atunci formula ar arata cam asa:
PS formula nu tine cont de cei născuți în perioada 1800-1899
Cod: Selectaţi tot
=IF(LEFT(A1;1)<3;DATE(1900+MID(A1;2;2);MID(A1;4;2);MID(A1;6;2));DATE(2000+MID(A1;2;2);MID(A1;4;2);MID(A1;6;2)))
10Q itlearning
Re: calcul varsta din data nasterii de tip...
In formula s-a strecurat o greseala, corect ar fi asa:alcoool2 scrie:Pai dacă presupunem ca ai CNP-ul in celula A1 atunci formula ar arata cam asa:PS formula nu tine cont de cei născuți în perioada 1800-1899Cod: Selectaţi tot
=IF(LEFT(A1;1)<3;DATE(1900+MID(A1;2;2);MID(A1;4;2);MID(A1;6;2));DATE(2000+MID(A1;2;2);MID(A1;4;2);MID(A1;6;2)))
=IF(LEFT(A1;1)>3;DATE(1900+MID(A1;2;2);MID(A1;4;2);MID(A1;6;2));DATE(2000+MID(A1;2;2);MID(A1;4;2);MID(A1;6;2)))
sau asa
=IF(LEFT(A1;1)<3;DATE(2000+MID(A1;2;2);MID(A1;4;2);MID(A1;6;2));DATE(1900+MID(A1;2;2);MID(A1;4;2);MID(A1;6;2)))
Re: calcul varsta din data nasterii de tip...
Eu nu cred ca am gresit pentru ca:
1. structura IF este astfel =IF(conditie; rezultat pentru adevarat; rezultat pentru fals)
2. semnificatia primei cifre din CNP este urmatoarea:
1 - persoane de sex masculin născute între 1 ianuarie 1900 şi 31 decembrie 1999
2 - persoane de sex feminin născute între 1 ianuarie 1900 şi 31 decembrie 1999
5 - persoane de sex masculin născute între 1 ianuarie 2000 şi 31 decembrie 2099
6 - persoane de sex feminin născute între 1 ianuarie 2000 şi 31 decembrie 2099
3. deci conditia ar fi astfel daca prima cifra mai mica ca 3 atunci anul este cu 1900 altfel este cu 2000
1. structura IF este astfel =IF(conditie; rezultat pentru adevarat; rezultat pentru fals)
2. semnificatia primei cifre din CNP este urmatoarea:
1 - persoane de sex masculin născute între 1 ianuarie 1900 şi 31 decembrie 1999
2 - persoane de sex feminin născute între 1 ianuarie 1900 şi 31 decembrie 1999
5 - persoane de sex masculin născute între 1 ianuarie 2000 şi 31 decembrie 2099
6 - persoane de sex feminin născute între 1 ianuarie 2000 şi 31 decembrie 2099
3. deci conditia ar fi astfel daca prima cifra mai mica ca 3 atunci anul este cu 1900 altfel este cu 2000
10Q itlearning
Re: calcul varsta din data nasterii de tip...
@alcoool2
Evident ca nici ce am scris eu nu este valabil. Eu am testat formula ta pe CNP-ul meu si mi-a dat ca m-am nascut in 20XX. evident ca formula returna , rezultatul pentru fals al IF-ului.
asa este daca functia Left folosita nu ar returna text, in felul acesta conditia IF-ului nefiind indeplinita, va returna intotdeauna rezultatul pentru fals[structura IF este astfel =IF(conditie; rezultat pentru adevarat; rezultat pentru fals)
Evident ca nici ce am scris eu nu este valabil. Eu am testat formula ta pe CNP-ul meu si mi-a dat ca m-am nascut in 20XX. evident ca formula returna , rezultatul pentru fals al IF-ului.
Re: calcul varsta din data nasterii de tip...
Nu stiu de ce dar pe excel-ul de la servici a mers. Oricum avem o varianta corectata
Cod: Selectaţi tot
=IF(VALUE(LEFT(A1;1))<3;DATE(1900+MID(A1;2;2);MID(A1;4;2);MID(A1;6;2));DATE(2000+MID(A1;2;2);MID(A1;4;2);MID(A1;6;2)))
10Q itlearning
-
- Mesaje: 210
- Membru din: Mie Iun 15, 2011 8:47 pm
Re: calcul varsta din CNP
Multumesc pentru raspuns,insa vroiam din CNP sa aflu varsta.Stiti vreo formula?
Re: calcul varsta din data nasterii de tip...
Daca in B2 ai CNP-ul.....
=DATEDIF(DATE(IF(VALUE(RIGHT(YEAR(TODAY());2))>VALUE(MID(B2;2;2));LEFT(YEAR(TODAY());2)&MID(B2;2;2);(VALUE(LEFT(YEAR(TODAY());2))-1)*100+VALUE(MID(B2;2;2)));MID(B2;4;2);MID(B2;6;2));TODAY();"y")
Functie de setarile regionale inlocuieste ";" cu ","
=DATEDIF(DATE(IF(VALUE(RIGHT(YEAR(TODAY());2))>VALUE(MID(B2;2;2));LEFT(YEAR(TODAY());2)&MID(B2;2;2);(VALUE(LEFT(YEAR(TODAY());2))-1)*100+VALUE(MID(B2;2;2)));MID(B2;4;2);MID(B2;6;2));TODAY();"y")
Functie de setarile regionale inlocuieste ";" cu ","
-
- Moderator
- Mesaje: 813
- Membru din: Vin Sep 09, 2011 4:05 pm
- Localitate: Iaşi
Re: calcul varsta din data nasterii de tip...
Cu functia DATE, extrage din CNP data nasterii:=DATE(MID(B2;2;2);MID(B2;4;2);MID(B2;6;2))
Calculul varstei dupa o data oarecare introdusa in B2, se face cu:
="Vârsta este "&DATEDIF(B2;TODAY();"y")&" ani, "&DATEDIF(B2;TODAY();"ym")&" luni şi "&DATEDIF(B2;TODAY();"md")&" zile."
Daca in B2 se introduce CNP-ul, nu avem decat sa extragem din CNP data nasterii cu prima formula, deci unde este referinta directa la B2 inlocuim cu formula care extrage data din CNP:
="Vârsta este "&DATEDIF(DATE(MID(B2;2;2);MID(B2;4;2);MID(B2;6;2));TODAY();"y")&" ani, "&DATEDIF(DATE(MID(B2;2;2);MID(B2;4;2);MID(B2;6;2));TODAY();"ym")&" luni şi "&DATEDIF(DATE(MID(B2;2;2);MID(B2;4;2);MID(B2;6;2));TODAY();"md")&" zile."
L.E:
Scuze, formula de mai sus nu tine cont de prima cifra ( ):
1/2 - cetateni romani nascuti intre 1 ian 1900 si 31 dec 1999
3/4 - cetateni romani nascuti intre 1 ian 1800 si 31 dec 1899
5/6 - cetateni romani nascuti intre 1 ian 2000 si 31 dec 2099
7/8 - rezidenti
Persoanele de cetatenie straina se identifica cu cifra "9"
deci, data nasterii va fi:
=CHOOSE(IF(--MID(B2;1;1)<3;1;2);DATE(19&MID(B2;2;2);MID(B2;4;2);MID(B2;6;2));DATE(20&MID(B2;2;2);MID(B2;4;2);MID(B2;6;2)))
Iar formula finala va fi:
="Vârsta este "&DATEDIF(CHOOSE(IF(--MID(B2;1;1)<3;1;2);DATE(19&MID(B2;2;2);MID(B2;4;2);MID(B2;6;2));DATE(20&MID(B2;2;2);MID(B2;4;2);MID(B2;6;2)));TODAY();"y")&" ani, "&DATEDIF(CHOOSE(IF(--MID(B2;1;1)<3;1;2);DATE(19&MID(B2;2;2);MID(B2;4;2);MID(B2;6;2));DATE(20&MID(B2;2;2);MID(B2;4;2);MID(B2;6;2)));TODAY();"ym")&" luni şi "&DATEDIF(CHOOSE(IF(--MID(B2;1;1)<3;1;2);DATE(19&MID(B2;2;2);MID(B2;4;2);MID(B2;6;2));DATE(20&MID(B2;2;2);MID(B2;4;2);MID(B2;6;2)));TODAY();"md")&" zile."
CNP-ul care incepe cu 3 sau 4, nu poate fi transformat in format data decat cu VBA.
Iar daca se doreste o mai mare personalizare, in loc de:
"Vârsta este "
se poate folosi:
"Vârsta "&IF(ISEVEN(--MID(B2;1;1));"doamnei";"domnului")&" este "
Calculul varstei dupa o data oarecare introdusa in B2, se face cu:
="Vârsta este "&DATEDIF(B2;TODAY();"y")&" ani, "&DATEDIF(B2;TODAY();"ym")&" luni şi "&DATEDIF(B2;TODAY();"md")&" zile."
Daca in B2 se introduce CNP-ul, nu avem decat sa extragem din CNP data nasterii cu prima formula, deci unde este referinta directa la B2 inlocuim cu formula care extrage data din CNP:
="Vârsta este "&DATEDIF(DATE(MID(B2;2;2);MID(B2;4;2);MID(B2;6;2));TODAY();"y")&" ani, "&DATEDIF(DATE(MID(B2;2;2);MID(B2;4;2);MID(B2;6;2));TODAY();"ym")&" luni şi "&DATEDIF(DATE(MID(B2;2;2);MID(B2;4;2);MID(B2;6;2));TODAY();"md")&" zile."
L.E:
Scuze, formula de mai sus nu tine cont de prima cifra ( ):
1/2 - cetateni romani nascuti intre 1 ian 1900 si 31 dec 1999
3/4 - cetateni romani nascuti intre 1 ian 1800 si 31 dec 1899
5/6 - cetateni romani nascuti intre 1 ian 2000 si 31 dec 2099
7/8 - rezidenti
Persoanele de cetatenie straina se identifica cu cifra "9"
deci, data nasterii va fi:
=CHOOSE(IF(--MID(B2;1;1)<3;1;2);DATE(19&MID(B2;2;2);MID(B2;4;2);MID(B2;6;2));DATE(20&MID(B2;2;2);MID(B2;4;2);MID(B2;6;2)))
Iar formula finala va fi:
="Vârsta este "&DATEDIF(CHOOSE(IF(--MID(B2;1;1)<3;1;2);DATE(19&MID(B2;2;2);MID(B2;4;2);MID(B2;6;2));DATE(20&MID(B2;2;2);MID(B2;4;2);MID(B2;6;2)));TODAY();"y")&" ani, "&DATEDIF(CHOOSE(IF(--MID(B2;1;1)<3;1;2);DATE(19&MID(B2;2;2);MID(B2;4;2);MID(B2;6;2));DATE(20&MID(B2;2;2);MID(B2;4;2);MID(B2;6;2)));TODAY();"ym")&" luni şi "&DATEDIF(CHOOSE(IF(--MID(B2;1;1)<3;1;2);DATE(19&MID(B2;2;2);MID(B2;4;2);MID(B2;6;2));DATE(20&MID(B2;2;2);MID(B2;4;2);MID(B2;6;2)));TODAY();"md")&" zile."
CNP-ul care incepe cu 3 sau 4, nu poate fi transformat in format data decat cu VBA.
Iar daca se doreste o mai mare personalizare, in loc de:
"Vârsta este "
se poate folosi:
"Vârsta "&IF(ISEVEN(--MID(B2;1;1));"doamnei";"domnului")&" este "
Probleme să fie, că soluţii se găsesc...