Jun 272013
 

Nýlega fengum við fyrirspurn um það hvernig hægt sé að raða kennitölum eftir fæðingardegi. Þetta krefst smá formúluvinnslu, sem er í raun einföld ef hún er tekin í litlum skrefum.


Hér er það sem þarf að gerast:

  • Að brytja fyrstu sex tölustafi kennitölunnar niður í þrjár einingar: dag, mánuð og ár.
  • Að finna út á hvaða öld árið tilheyrir. Það finnst með því að skoða lokastafinn í kennitölunni. Núll táknar 21. öldina (2000) og 9 táknar 20. öldina (1900).
  • Kennitölur eru alla jafna skynjaðar sem tölur af Excel og því getur verið leiðingjarnt að eiga við þær. Það þarf því að finna út hvort kennitalan séu níu eða tíu tölustafir. Hún er níu tölustafir ef fyrsta talan er núll. Þannig breytist t.d. kennitalan 0101010109 í 101010109.
  • Að raða eftir dagsetningu.

Þá hefjumst við handa. Gerum ráð fyrir að upphafskennitalan sé í reitnum A1.

  1. Að brytja niður kennitöluna er mjög einfalt. Við notumst við formúlurnar MID, LEFT og RIGHT til að finna dagsetningarnar. Einnig notumst við við LEN til að finna út fjölda tölustafa í kennitölu og IF í samblandi við hana.
    1. Byrjum á deginum. Ef kennitalan eru 9 stafir þá þurfum við að sækja einn staf frá vinstri, annars tvo. Formúlan yrði þá =IF(LEN(A1)=10;LEFT(A1;2);LEFT(A1;1))*1.
      1. Formúlan er margfölduð með einum til að breyta henni í tölu, til að forðast rugling síðar meir.
    2. Næst er það mánuðurinn. Það virkar eins nema í stað LEFT er notast við MID formúluna, sem sækir streng í hvar sem er í talnarununni. Formúlan fyrir mánuðinn myndi þá vera =IF(LEN(A1)=10;MID(A1;3;2);MID(A1;2;2))*1.
    3. Að lokum er það árið. Það virkar eins nema í þetta skipti þurfum við bæði að finna fjölda tölustafa og spyrja hvaða tala er síðast í kennitölunni, til að annað hvort plúsa við 1900 eða 2000. Hún lítur þá svona út: =IF(LEN(A1)=10;MID(A1;5;2);MID(A1;4;2))*1+IF(RIGHT(A1;1)*1=9;1900;2000).
  2. Þegar tölurnar fyrir dag, mánuð og ár hafa verið fengnar er tilvalið að hnoða þeim saman í hráa dagsetningu með formúlunni DATE. Formúlan virkar þannig að þú setur inn ár, mánuð og dag í hana og hún breytir þeim í tölu sem Excel notar yfir dagsetningar. Þeirri tölu er svo breytt í dagsetningu í gegnum Format Cell fídusinn.
    1. Formúlan skráð svona inn =DATE([ár];[mánuður];[dagur]). Hornsvigaatriðin eru hér öll að ofan. Þegar þau hafa verið sett inn lítur formúlan svona út:

      =DATE(IF(LEN(A1)=10;MID(A1;5;2);MID(A1;4;2))*1+IF(RIGHT(A1;1)*1=9;1900;2000);
      IF(LEN(A1)=10;MID(A1;3;2);MID(A1;2;2))*1;IF(LEN(A1)=10;LEFT(A1;2);LEFT(A1;1))*1)

  3. Þá hefur kennitölunni verið breytt í dagsetningu. Þá er ekkert því til fyrirstöðu að draga formúluna niður alla kennitöluröðina og raða svo eftir dagsetningu með því að fara í DATA og svo SORT (eftir formúlu dálkinum, ekki kennitölu).

Í viðhengdu skjali er hinsvegar notast við nýstárlega aðferð til að raða kennitölum upp eftir dagsetningu en þar má sjá 19 kennitalna töflu sem raðar kennitölum jafnóðum í töflu hægra megin við grunninn (ath. kennitölur skulu aðeins slegnar í bláu reitina). Skjalið er opið öllum. Mælt er með því að það sé skoðað nánar.

  3 Responses to “Uppröðun kennitalna eftir dagsetningu”

  1. Hæ, getur verið að formúlan í lið 2a sé ekki rétt ???

    • Sæl Jóhanna

      Við einhverja uppfærsluna á kerfinu hefur það breyst svo formúlan brotnaði ekki í aðra línu heldur hvarf.

      Það er lagfært að ofan. Formúlan virkar ef kennitala er skráð í A1.

      =DATE(IF(LEN(A1)=10;MID(A1;5;2);MID(A1;4;2))*1+IF(RIGHT(A1;1)*1=9;1900;2000);
      IF(LEN(A1)=10;MID(A1;3;2);MID(A1;2;2))*1;IF(LEN(A1)=10;LEFT(A1;2);LEFT(A1;1))*1)

      Kv.
      Finnur
      excel.is

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(krafist)

(krafist)

This site uses Akismet to reduce spam. Learn how your comment data is processed.