Excel-tippek - Évek, hónapok, napok

LINK – 2017.09.06.

 

Sorozatunk legújabb részében egy kicsit az évekkel foglalkozunk. Meg a hónapokkal, meg a napokkal, meg úgy általában a dátumokkal.

 

Nagyon sokszor találkozhatunk olyan munkafüzetekkel, amelyekben a dátumok valójában csak dátumnak kinéző szövegek, és mint ilyenek, csak dekorációs célokat szolgálnak. Sőt, nem egyszer látni olyan megoldásokat is, amikor ezeket a "dátumokat" különböző szövegfüggvényekkel darabolják fel, például azért, hogy segítségükkel szűrhessenek éves vagy havi adatokat. Pedig az Excelben két tucat dátum- és időfüggvény található, melyek segítségével számtalan, akár a mindennapi életben is hasznos információkhoz juthatunk.

 

 

Dátumdarabok


Nagyon fontos, hogy már a legelején tisztázzuk: az Excelben a dátumok speciális megjelenítésű számok - és többek között ez a tulajdonságuk teszi lehetővé, hogy különböző műveleteket hajtsunk végre velük, rajtuk. A windowsos Excelben alapértelmezés szerint a dátumok "origója" 1899. december 31., egész pontosan - függetlenül attól, hogy ez kissé furcsán hangzik - 1900. január 0. Ahhoz, hogy ezt ellenőrizzük, nem kell mást tennünk, mint egy cellába bírni egy 0-t, majd ezt a cellát dátumként formázni.

 

 

Ha ugyanennek a cellának az értékét 1-re változtatjuk, akkor eredményül 1900.01.01.-et kapunk, ha 2-re, akkor 1900.01.02.-t, ha 366-ra, akkor 1900.12.31-et (1900 szökőév volt), ha pedig 42 370-re, akkor 2016.01.01-et. (Azért írtam azt, hogy a "windowsos Excelben" és hogy "alapértelmezés szerint", mert Macen a dátumok számítása 1904. január 1-jével kezdődik, ahogyan erre a módra átkapcsolhatunk Windows alatt is a speciális beállítások oldalán.)

Ahogyan az egész számok az eltelt napokat jelentik, úgy a tizedesek az órákat, perceket és másodperceket. Így 1/24 (0,04167) egy órát, 1/1440 (0,0006944) egy percet, míg 1/86400 (0,000011574) egy másodpercet "ér". Például ha a 42370,38542 értékű cellához olyan formátumot rendelünk, ami a dátumot és az időt is mutatja, akkor megkapjuk, hogy ez 2016.01.01. 09:15-öt jelent.

 

 

E dátumok nagy előnye a "dátumoknak kinéző szövegekkel" szemben, hogy sokkal egyszerűbben, kényelmesebben és nem utolsósorban sokoldalúbban tudunk velük számolni. Ha például az A1-es cellában található dátum évére vagyunk kíváncsiak, akkor csak annyit kell írnunk, hogy =ÉV(A1), vagy ha hónapjára, akkor =HÓNAP(A1), ha pedig a napjára, akkor =NAP(A1). Amennyiben nem csak az évek, hónapok és napok, hanem az órák, percek és másodpercek is fontosak, akkor használjuk az ÓRA, PERCEK és MPERC függvényeket. A dátumokat és időpontokat nem csupán szétszedni tudjuk, hanem összerakni is a DÁTUM és az IDŐ függvényekkel, amelyeknek három-három kötelező eleme az év, a hónap és a nap, valamint az óra, a perc és a másodperc.

 

Dátumszámítás


Ahogyan azt a legelején már tisztáztuk, a dátumok számok, így elviekben bármilyen számtani műveletet elvégezhetünk velük, csak kérdéses, hogy például van-e értelme összeszorozni két dátumot vagy kiszámítani egy dátum szinuszát? Ugyanakkor teljesen "sztenderd eljárás", hogy kivonjunk egymásból két dátumot, kiszámolandó a köztük eltelt napok számát (erre elvileg használhatnánk a NAPOK függvényt is, csak teljesen felesleges), persze nem elfelejtve az eredmény számként történő megjelenítését; vagy hozzáadjunk egy számot egy dátumhoz, hogy megtudjuk, milyen nap is lesz X nap múlva.

Sokszor nagyon hasznos, hogy számolni nemcsak a dátumokkal, hanem azok egyes elemeivel is tudunk. Ha például kíváncsiak vagyunk, hogy egy adott dátumhoz (A1) képest milyen nap lesz három hónap múlva, akkor azt a következő módon tehetjük meg a legegyszerűbben: =DÁTUM(ÉV(A1);HÓNAP(A1)+3;NAP(A1)). És mivel a DÁTUM függvény nagyon szépen kezeli az "átvitt értékeket", akkor is tökéletes eredményt ad, ha az A1-es cellában lévő dátum hónapja október, november vagy december. Ahogyan a hónap utolsó napját nemcsak a HÓNAP.UTOLSÓ.NAP függvénnyel számíthatjuk ki, hanem úgy is, hogy megnézzük, a következő hónapnak melyik a nulladik napja:

 

 

Speciális eset, amikor két dátum különbségét nem napokban szeretnénk megtudni, hanem törtévként. Ennek kiszámítására használhatjuk a TÖRTÉV függvényt, amelynek első két paramétere a kezdő- és a végdátum, harmadik, opcionális argumentuma pedig a napok kiszámítására használt módszer kódszáma, ami 0 és 4 között változhat attól függően, hogy 360, 365 vagy a tényleges napokkal akarunk-e számolni.

 

Hetek


Sokszor szükségünk lehet arra az információra is, hogy az adott dátum a hét melyik napjára esik. Ha ezt csak látni, láttatni szeretnénk, akkor ehhez elegendő akár az adott cellának, akár egy másolatának a formázásában megjeleníteni az "nnn" vagy "nnnn" elemet. Előbbi ugyanis a hét napjának rövidítését, míg utóbbi annak teljes nevét jeleníti meg.

 

De mi van akkor, ha mi számolni is szeretnénk az adott nappal? Ilyenkor használhatjuk a HÉT.NAPJA függvényt, melynek első paramétere az a dátum, aminek a napjára kíváncsiak vagyunk, a második pedig az "eredmény típusa". Ez utóbbitól függ, hogy milyen nappal kezdődik a hét (1 vagy 17 vasárnap, 2, 3 vagy 11 hétfő, 12 kedd, 13 szerda stb.), illetve hogy 0-val vagy 1-gyel kezdődjön a számolás (ha 3, akkor 0-tól, minden más esetben 1-től). Így például az =A1-HÉT.NAPJA(A1;3) képlet minden esetben az A1-es cellában található dátumot megelőző hétfőt adja eredményül.

 

Más esetekben az is fontos lehet, hogy egy adott nap az év hányadik hetében is van. Ennek kiszámítására szolgál a HÉT.SZÁMA függvény, első paramétere a dátumérték, aminek hetére kíváncsiak vagyunk, a második attribútuma pedig egyrészt a "rendszert" határozza meg, másrészt a hét kezdőnapját. Az úgynevezett rendszer ez esetben azért fontos, mert vannak, akiknél az év első hete mindig a január 1-jét tartalmazó hét (1-17.), míg az ISO 8601 szabvány úgy fogalmaz, hogy az év első hete az év első csütörtökét tartalmazó hét vagy másképpen az a hét, amelyiken január 4. van (21). Ez utóbbit használja természetesen az ISO.HÉT.SZÁMA függvény is, aminek csak és kizárólag egy dátumértéket kell megadnunk.

 

Ünnepek és munkanapok


A dátumokkal kapcsolatos egyik legösszetettebb feladat, amikor munkanapokkal kell számolnunk. Szerencsére az Excel ehhez négy hasznos függvényt nyújt számunkra, az ÖSSZ.MUNKANAP és a KALK.MUNKANAP függvényeket, valamint ezek .INTL végződésű párjait.

Az ÖSSZ.MUNKANAP és a KALK.MUNKANAP függvények között az a különbség, hogy előbbinek két dátumot kell megadnunk, és eredményül a kettő közötti munkanapok számát kapjuk meg, míg utóbbinál egy kezdődátumot, valamint egy pozitív vagy negatív munkanapszám alapján kapjuk meg a másik végdátumot. Mindkét függvény opcionális paramétere egy tartomány vagy tömb, amiben az ünnepnapokat kell felsorolnunk.

 

 

Mindkét függvényre igaz, hogy a szombatokat és a vasárnapokat nem tekintik munkanapnak. De mi van akkor, ha valakinek például a kedd és csütörtök a pihenőnapja? Ilyenkor kell elővennünk ÖSSZ.MUNKANAP.INTL és a KALK.MUNKANAP.INTL függvényeket, amelyeknél egy kód vagy egy hétkarakteres "bináris szöveg" formájában - amikor is az 1-esek a munkaszüneti napokat, a 0-k a munkanapokat jelölik, például "0101000" a fent említett kedd és csütörtök pihenőnap - megadhatjuk, hogy melyek a munkaszüneti napok. Így például azt is nagyon könnyen kiszámolhatjuk, hogy mennyi különórája lesz gyermekünknek 2016 első félévében, ha minden hétfőn és csütörtökön jár foglalkozásokra:

 

 

A képletben "Ünnepek" egy nevesített tartomány, amiben az ünnepnapokat soroltuk fel.

 

Húsvétszámítás


Az ünnepnapok többségének nagyon egyszerűen meg lehet határozni az időpontját, hiszen csak az évszámot kell cserélnünk a DÁTUM függvényben, például =DÁTUM(ÉV;3;15) vagy =DÁTUM(ÉV;12;25). Az egyetlen probléma a húsvéttal van, ez ugyanis úgynevezett mozgó ünnep, időpontja évről évre változik. A Nagy Konstantin által összehívott, 325-ös niceai zsinat határozata szerint a húsvéti ünnep a tavaszi napéjegyenlőséget követő holdtölte utáni vasárnapon van. Így legkorábban a húsvét március 22-én lehet, amennyiben a március 21-i tavaszi napéjegyenlőség szombatra esik, és aznap éppen telihold is van. Ez nem túl gyakran fordul elő, legutóbb ilyen korai húsvét 1818-ban volt, legközelebb pedig 2285-ben, majd 2353-ban lesz. A legkésőbbi húsvét április 25-én lehet, hogyha a holdtölte pont a tavaszi napéjegyenlőség utáni napra esik, majd az ezt követő teljes holdciklust lezáró újabb telihold vasárnap jön el, mert így még egy hetet várni kell. Érdekes módon ez valamivel gyakoribb, így történt 1886-ban és 1943-ban is, míg a következő április 25-i húsvétra már "csak" 22-évet, azaz 2038-ig kell várnunk.

 

 

A húsvétszámítás (computus paschalis) a középkori matematika egyik legfontosabb alkalmazása volt. Az interneten keresgélve számtalan táblázatos és algoritmikus megoldást találhatunk, ám ezek részletes kifejtésétől több okból is eltekintenénk. Mi inkább Norbert Hetterich képletének (egy 2000-es Exceles verseny győztes képlete) "honosított" változatát használjuk:

 

 

Ezt a képletet az elkövetkezendő 62 évben nyugodtan alkalmazhatjuk, ugyanis először 2079-ben "téved egy hetet", majd 2203-ig megint hibátlanul működik. Ha pedig megvan húsvét vasárnap dátuma, akkor abból már egyszerűen meghatározhatjuk a húsvét hétfőét is, hiszen csak egyet kell hozzáadnunk, sőt a pünkösdvasárnapét és -hétfőét is, mivel előbbi 49, míg utóbbi 50 nappal követi a húsvétot.