Iän laskeminen HETU:n perusteella?

Hei, kuinka Excelissä voisi laskea Hetun perusteella iän? Olen käyttänyt komentoa PVMERO.

Ongelmana on kuitenkin tuo, että hetu pitäisi saada muodosta 010182-12AB muotoon 01.01.1982. Lisäksi, miten lasku tapahtuu, kun kyseessä on 2000 -luvulla syntynyt? tällöin pitäisi saada 010101A12AB -> 01.01.2001 -muotoon.
198933
Äänestä

Muut lukivat myös

Vastaukset 19

Vanhimmat

Solussa A1 HETU
Jos haluat iän vuosina kaava
=JOS(POIMI.TEKSTI(A1;7;1)="-";PVMERO(PÄIVÄYS(19&POIMI.TEKSTI(A1;5;2);POIMI.TEKSTI(A1;3;2);VASEN(A1;2));NYT();"y");JOS(POIMI.TEKSTI(A1;7;1)="A";PVMERO(PÄIVÄYS(20&POIMI.TEKSTI(A1;5;2);POIMI.TEKSTI(A1;3;2);VASEN(A1;2));NYT();"y");""))

Jos haluat iän päivinä kaava
=JOS(POIMI.TEKSTI(A1;7;1)="-";PVMERO(PÄIVÄYS(19&POIMI.TEKSTI(A1;5;2);POIMI.TEKSTI(A1;3;2);VASEN(A1;2));NYT();"d");JOS(POIMI.TEKSTI(A1;7;1)="A";PVMERO(PÄIVÄYS(20&POIMI.TEKSTI(A1;5;2);POIMI.TEKSTI(A1;3;2);VASEN(A1;2));NYT();"d");""))

Elikkä POIMI.TEKSTI funktiolla testataan onko seitsemäs merkki - vai A.
PÄIVÄYS funktiolla muutetaan päivämääräksi, jota käytetään aloituspäivänä ja NYT() funktio toimii lopetuspäivänä.

Äänestä
  • Entäpä ennen 1.1.1900 syntyneet, execelin ajanlaskuhan alkaa vasta 1900 luvun alusta.
    Seitsemäs merkkihän on jos henkilö on syntynyt 1800 luvulla.
    Onnistuuko laskekeminen jos hetu on
    170496 034h

    Äänestä

  • Utelias kirjoitti:

    Entäpä ennen 1.1.1900 syntyneet, execelin ajanlaskuhan alkaa vasta 1900 luvun alusta.
    Seitsemäs merkkihän on jos henkilö on syntynyt 1800 luvulla.
    Onnistuuko laskekeminen jos hetu on
    170496 034h

    Excel ei osaa suoraan laskea ennen 1.1.1900 syntyneiden ikää, mutta 1800 luvulla syntyneiden ikä saadaan kun tehdään JOS kaava joka laskee syntymäajan 1900luvulle ja lisää NYT() päivään sata vuotta(36525 päivää) mikäli seitsemäs merkki on .
    Kaava vuosina
    =JOS(POIMI.TEKSTI(A1;7;1)="-";PVMERO(PÄIVÄYS(19&POIMI.TEKSTI(A1;5;2);POIMI.TEKSTI(A1;3;2);VASEN(A1;2));NYT();"y");JOS(POIMI.TEKSTI(A1;7;1)="A";PVMERO(PÄIVÄYS(20&POIMI.TEKSTI(A1;5;2);POIMI.TEKSTI(A1;3;2);VASEN(A1;2));NYT();"y");JOS(POIMI.TEKSTI(A1;7;1)=" ";PVMERO(PÄIVÄYS(19&POIMI.TEKSTI(A1;5;2);POIMI.TEKSTI(A1;3;2);VASEN(A1;2));NYT() 36525;"y");"")))

    päivinä
    =JOS(POIMI.TEKSTI(A1;7;1)="-";PVMERO(PÄIVÄYS(19&POIMI.TEKSTI(A1;5;2);POIMI.TEKSTI(A1;3;2);VASEN(A1;2));NYT();"d");JOS(POIMI.TEKSTI(A1;7;1)="A";PVMERO(PÄIVÄYS(20&POIMI.TEKSTI(A1;5;2);POIMI.TEKSTI(A1;3;2);VASEN(A1;2));NYT();"d");JOS(POIMI.TEKSTI(A1;7;1)=" ";PVMERO(PÄIVÄYS(19&POIMI.TEKSTI(A1;5;2);POIMI.TEKSTI(A1;3;2);VASEN(A1;2));NYT() 36525;"d");"")))

    Äänestä

  • paavali50 kirjoitti:

    Excel ei osaa suoraan laskea ennen 1.1.1900 syntyneiden ikää, mutta 1800 luvulla syntyneiden ikä saadaan kun tehdään JOS kaava joka laskee syntymäajan 1900luvulle ja lisää NYT() päivään sata vuotta(36525 päivää) mikäli seitsemäs merkki on .
    Kaava vuosina
    =JOS(POIMI.TEKSTI(A1;7;1)="-";PVMERO(PÄIVÄYS(19&POIMI.TEKSTI(A1;5;2);POIMI.TEKSTI(A1;3;2);VASEN(A1;2));NYT();"y");JOS(POIMI.TEKSTI(A1;7;1)="A";PVMERO(PÄIVÄYS(20&POIMI.TEKSTI(A1;5;2);POIMI.TEKSTI(A1;3;2);VASEN(A1;2));NYT();"y");JOS(POIMI.TEKSTI(A1;7;1)=" ";PVMERO(PÄIVÄYS(19&POIMI.TEKSTI(A1;5;2);POIMI.TEKSTI(A1;3;2);VASEN(A1;2));NYT() 36525;"y");"")))

    päivinä
    =JOS(POIMI.TEKSTI(A1;7;1)="-";PVMERO(PÄIVÄYS(19&POIMI.TEKSTI(A1;5;2);POIMI.TEKSTI(A1;3;2);VASEN(A1;2));NYT();"d");JOS(POIMI.TEKSTI(A1;7;1)="A";PVMERO(PÄIVÄYS(20&POIMI.TEKSTI(A1;5;2);POIMI.TEKSTI(A1;3;2);VASEN(A1;2));NYT();"d");JOS(POIMI.TEKSTI(A1;7;1)=" ";PVMERO(PÄIVÄYS(19&POIMI.TEKSTI(A1;5;2);POIMI.TEKSTI(A1;3;2);VASEN(A1;2));NYT() 36525;"d");"")))

    Noinhan se onnistuu

    Äänestä

Hetun perusteella sukupuli määritellään loppuosan kolmen ensimmäisen numeron perusteella, jos numerosarja (esim hetussa 000000-453X numero 453) on parillinen, kyseessä nainen, parittomilla sarjoilla mies.

Sukupuoli pystytään tunnistaan excelissä mm. näin, kun laittaa moneen soluun tavaraa:

A1 =000000-453w    
B1 =POIMI.TEKSTI(A1;8;3)/2
C1 =OIKEA(A2;2)
D1 =POIMI.TEKSTI(C1;1;1)
E1 =JOS(LASKE.JOS(D1;"*,*");"mies";"nainen")

Mutta, kuinka saan tuon kaiken laitettua yhdeksi kaavaksi? (tai vielä yksinkertaisemmin)

Äänestä
  • =IF(ISODD(LEFT(RIGHT(A1;4);3));"mies";"nainen")

    JOS(ONPARITON(VASEN(OIKEA(A1;4);3));"mies";"nainen")

    Äänestä

  • tämä ? kirjoitti:

    =IF(ISODD(LEFT(RIGHT(A1;4);3));"mies";"nainen")

    JOS(ONPARITON(VASEN(OIKEA(A1;4);3));"mies";"nainen")

    Ei valitetavasti toimi, tuo ISODD / ONPARITON -ei tunnu toimivan..

    Äänestä

  • ei toimi. kirjoitti:

    Ei valitetavasti toimi, tuo ISODD / ONPARITON -ei tunnu toimivan..

    Ilmeisesti tämä ei toimi 2002 excelissä..
    kokeilen johonkin soluun kaavaa =PARITON(5) palauttaa arvon #nimi

    Äänestä

  • Tinna82 kirjoitti:

    Ilmeisesti tämä ei toimi 2002 excelissä..
    kokeilen johonkin soluun kaavaa =PARITON(5) palauttaa arvon #nimi

    Jos analyysityökalut ei ole käytössä ONPARITON funktio ei toimi.
    Työkalut -> Apuohjelmat -> täppä kohtaan Analyysitökalut ja OK.

    Älä sekoita
    =PARITON ja =ONPARITON funktioita

    Äänestä

Joskus takavuosina virittelin tälläisen käyttäjän funktion iän laskemiseen - paha kyllä ei ole pahemmin kommentteja mutta kyllähän tuo kai selviää.

'*********iän lasku
Function laske_synt(hetu, tapvm)
Dim svv, skk, spv, tvv, tkk, tpv, oletus, ika
svv = "19" & Mid(hetu, 5, 2)
skk = Mid(hetu, 3, 2)
spv = Mid(hetu, 1, 2)
tvv = "20" & Mid(tapvm, 9, 2)
tkk = Mid(tapvm, 4, 2)
tpv = Mid(tapvm, 1, 2)
oletus = tvv - svv
ika = tvv - svv

If skk < tkk Then
ElseIf skk = tkk And spv > tpv Then
oletus = ika - 1
ElseIf skk > tkk Then
oletus = ika - 1
Else: oletus = ika
End If
laske_synt = oletus
End Function

'*********
tämä kyselee, missä hetu on ja päivämäärä, minkä mukaan lasku tapahtuu (täytyy olla muodossa 01.01.2006)

Äänestä
  • Muutaman vuoden myöhässä näin töistä kiitokset Paavali50:lle :)

    Äänestä

Kiitos Paavali50, lopputyöni edistyi avullasi kukonaskeleen verran!
terv. opiskelija

Äänestä

Tuossapa paranneltu classic asp koodi versio
joka tsekkaa hetun ja syötetyn päivämäärän pituuden.
Myös erotinmerkille tehty tarkastus mukana.


Function CalculateAge(hetu, tapvm)

Dim yearPrefix
Dim svv, skk, spv, tvv, tkk, tpv, oletus, ika

If Len(Trim(hetu)) = 11 And Len(Trim(tapvm)) = 10 Then

yearPrefix = Mid(hetu, 7, 1)

'response.write yearPrefix
'response.end

If yearPrefix = "A" Then
yearPrefix = "20"
ElseIf yearPrefix = "-" Then
yearPrefix = 19
Else
yearPrefix = "?"
End If

If yearPrefix "?" Then

svv = yearPrefix & Mid(hetu, 5, 2)
skk = Mid(hetu, 3, 2)
spv = Mid(hetu, 1, 2)

tvv = "20" & Mid(tapvm, 9, 2)
tkk = Mid(tapvm, 4, 2)
tpv = Mid(tapvm, 1, 2)
oletus = tvv - svv
ika = tvv - svv

If skk < tkk Then
ElseIf skk = tkk And spv > tpv Then
oletus = ika - 1
ElseIf skk > tkk Then
oletus = ika - 1
Else: oletus = ika
End If

CalculateAge = oletus

Else
CalculateAge = "?"
End If
Else
CalculateAge = "?"
End IF

End Function

Äänestä

Syntynyt 5.1.1879
Kuollut21.4.1962
Miten lasketaan ikä exelillä?

Äänestä

Helppo homma, kerron joskus.

Äänestä

Ketjusta on poistettu 1 sääntöjenvastainen viesti.

Kommentoi aloitusta


Tinna82 kirjoitti:

Hei, kuinka Excelissä voisi laskea Hetun perusteella iän? Olen käyttänyt komentoa PVMERO.

Ongelmana on kuitenkin tuo, että hetu pitäisi saada muodosta 010182-12AB muotoon 01.01.1982. Lisäksi, miten lasku tapahtuu, kun kyseessä on 2000 -luvulla syntynyt? tällöin pitäisi saada 010101A12AB -> 01.01.2001 -muotoon.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu