Iän laskeminen HETU:n perusteella?

Tinna82

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.

19

3298

Vastaukset

  • 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ä.

    • 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


    • 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");"")))


    • 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


  • 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)

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

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


    • 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..


    • 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


    • 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


  • 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)

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


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

  • 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

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

  • Helppo homma, kerron joskus.

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