további dátumkezelő függvények
2021-01-10    Excel 2019
kalk.dátum - hónap.utolsó.nap
Mindkét függvény egy dátumnál, megadott hónappal korábbi vagy későbbi dátumot képez. A KALK.DÁTUM magát a képzett dátumot, a HÓ­NAP.UTOLSÓ.NAP a képzett dátum hónapjának utolsó napját adja eredményül.
    A két függvény argumentumai azonosak: az első a dátumot, a második a hónap-számot meghatározó konstans, hivatkozás vagy ki­fe­je­zés. A KALK.DÁTUM( <dátum> ; <hónapszám> ) kifejezés csak látszólag azonos a DÁTUM( ÉV( <dátum> ) ; HÓNAP( <dátum> )+<hónap­szám> ; NAP( <dátum> )) kifejezéssel!
a KALK.DÁTUM működése
Ahogy a képen látjuk a különbség csak a hónap utolsó napjára eső dátumoknál jelentkezik (középső példa). Az azonos eredményt adó, DÁ­TUM-os kifejezést az alsó példa mutatja. Mondjuk nem egy őrületes különbség, de azért körültekintőnek kell lennünk.
a HÓNAP.UTOLSÓ.NAP működése
A képen a HÓNAP.UTOLSÓ.NAP függvény működését és a vele azonos eredményt adó DÁTUM-os kifejezést figyelhetjük meg.
munkanapok kezelése
Mielőtt elmerülünk a részletekben tisztázzuk a témakör fogalmait! Munkanapok: a hétköznapok és a szombatra áthelyezett mun­ka­na­pok. Pihenőnapok: a hétvégék és az ünnepnapok. Áthelyezett munkanap: az ünnepnap és a hétvége közé beékelődő egyetlen mun­ka­nap „le­dol­go­zá­sá­ra” kijelölt, az ünnepet megelőző valamelyik szombat. Munka: egy terv, amelyet cselekvéssel valósítunk meg. Mun­ka­vég­zés: a cse­lek­vés, amellyel a tervet megvalósítjuk.
    A program függvényeivel három „munkanapos” számítást tudunk elvégezni. [1] Meg tudjuk határozni egy munkavégzés utolsó napját (ha­táridő), a munkavégzés első napjának és a munka elvégzéséhez szükséges napok számának ismeretében. [2] Ki tudjuk számolni, me­lyik napon kell kezdeni (első nap) a munkavégzést a határidő (utolsó nap) és a munkavégzéshez szükséges napok számának is­me­re­té­ben. [3] Meg tudjuk állapítani egy munkavégzés napjainak számát a munkavégzés első és utolsó napjának ismeretében. Ter­mé­sze­te­sen mind­há­rom számításhoz rendelkeznünk kell az ünnepnapok és az áthelyezett munkanapok dátumaival.
a KALK.MUNKANAP és a az ÖSSZ.MUNKANAP függvények argumentum-listája
Ez a két munkanap-kezelő függvény hivatalos leírása, de ahogy látjuk egyik sem veszi figyelembe az áthelyezett munkanapokat. Per­sze er­re mondhatja a Microsoft, hogy nemzeti sajátosságokkal nem foglalkozik. De van még egy bibi: hétfőn reggel jön a mesterember ki­fes­te­ni a konyhát. Kedd délután ötre végez vele. Akkor ez egy kétnapos munkavégzés. Nézzük, hogyan látják ezt a függvények!
a KALK.MUNKANAP működésének hibája
Tehát a KALK.MUNKANAP hibás eredményt ad. Elmesélem, hogy miért. Az egyik függvényt jakutföldi Fegya programozta, akinek nagyon ke­ve­set kell fizetni, a másikat kalkuttai Rahul, akinek még kevesebbet kell fizetni, és csak az egyikük gondolt erre az apróságra. A bajt te­téz­te, hogy redmondi Alex, amikor ellenőrizni kellett volna őket, még el volt varázsolva az előző esti Michelin-csillagos vacsorától és az azt kö­ve­tő kokós eseményektől.
a KALK.MUNKANAP működési hibájának javítása
Ez lenne a KALK.MUNKANAP két funkciójának javítása. Az áthelyezett munkanapok figyelembe vétele már nagyobb falat.
    Először az ÖSSZ.MUNKANAP-ra nézzünk egy komolyabb példát! Az ünnepnapok listájában nem szerepeltettem a hétvégére eső ün­ne­pe­ket, mert azokat a függvény ünnep nélkül is munkaszüneti napnak veszi. Szerepeltettem viszont egy kamu ünnepet is, de csak azért, hogy az áthelyezett munkanapok „listája” legalább kételemű legyen.
a munkanapok darabszámának meghatározása az ÖSSZ.MUNKANAP függvények
Azoknak a munkáknak a celláit, amelyeknek az első vagy utolsó napja áthelyezett munkanapra esik aranysárgával színeztem.
    A munkavégzés idejére eső szombatra áthelyezett munkanapok számát a DARABHATÖBB függvénnyel képeztem, amely azonos „mé­re­tű” és tájolású tartományokat vizsgál. Argumentumai párban állnak: tartomány1-feltétel1, tartomány2-feltétel2…Megfelelnek-e a tar­to­má­nyok cellái a hozzájuk tartozó kritériumnak. A tartományok azonos pozícióban álló celláit a függvény egy munkamenetben ellenőrzi, és azoknak a munkameneteknek a darabszámát adja eredményül, amelyekben minden cella megfelelt a saját feltételének. Ez a függ­vény mű­kö­dé­sé­nek általános leírása. A mi esetünkben egyszerűbb a magyarázat: hány olyan dátum található az áthelyezett mun­ka­na­pok lis­tá­já­ban, amely az adott munkavégzés idejére esett, az első és az utolsó napot is beleértve.
    Fordítsuk meg a példát! Vegyük konstansként a munkanapok számát és a munkavégzés első napjának ismeretében számoljuk ki a mun­ka­vég­zés utolsó napját! Ha jól számolunk, akkor az eredmény azonos lesz az előző példában konstansként megadott utolsó nap­pal.
a munkavégzés utolsó napjának meghatározása a KALK.MUNKANAP függvények
Az áthelyezett munkanapok figyelembe vétele az előző algoritmusban nem okozott különösebb gondot, de ebben az esetben már azt is számba kellett vennünk, hogy az utolsó nap egybeeshet egy áthelyezett munkanappal. A feladat megoldásának lépései a következők.
az munkavégzés utolsó napjának számítása, a képlet elemei
[UN.A] A munkavégzés utolsó napjának képzése az áthelyezett munkanapok figyelembe vétele nélkül. A KALK.MUNKANAP „napok száma” ar­gu­mentuma értékének eggyel csökkentése a függvény hibás működésének javítása.
    [ÁM] A munkavégzés idejére eső áthelyezett munkanapok száma. A KALK.MUNKANAP függvény eredményét a szombatra eső első mun­ka­nap nem befolyásolja!
    [UN.B] A munkavégzés utolsó napjának képzése az áthelyezett munkanapok figyelembe vételével. A KALK.MUNKANAP „napok száma” ar­gu­mentumának csökkentése az áthelyezett munkanapok darabszámával.
    [UN.E] Az előző számítás nem százszázalékos, mert nem veszi figyelembe az utolsó nap és egy áthelyezett munkanap esetleges egy­be­e­sé­sét. Vegyük a 007-es munkát. Az UN.A számítás 2021. július 5. hétfőt eredményez. Ha a „napok száma” argumentumból ki­von­juk az át­he­lye­zett munkanapok számát, az egyet, akkor a függvény az előző hét péntekét adja eredményül (2021. július 2.) az át­he­lye­zett mun­ka­nap helyett (2021. június 3.). Ezért a DARABTELI függvénnyel ellenőrizzük kell, hogy az áthelyezett munkanapok listájában sze­re­pel-e az u­tol­só napot követő nap. Ha szerepel, akkor a DARABTELI egyet ad eredményül, ha nem akkor nullát.
    [UN.C] Az utolsó nap dátumának esetleges módosítása az ellenőrzés eredményével. Az UN.E számítás eredményét hozzáadjuk az UN.B számítás eredményéhez.
    A KALK.MUNKANAP függvény másik funkciójának bemutatásához, ismét alakítsuk át a példa-feladatot: most a határidőt (utolsó nap) és a na­pok száma lesz konstans. Számoljuk ki mikor kezdődjön a munkavégzés!
az munkavégzés első napjának meghatározása a KALK.MUNKANAP függvénnyel
A bonyolult képlet, annak köszönhető, hogy figyelembe kellett vennünk azt a lehetőséget, hogy a munkavégzés kezdése áthelyezett mun­ka­nap­ra is eshet. Tanulmányozzuk az algoritmust!
az munkavégzés első napjának meghatározása a KALK.MUNKANAP függvénnyel
[EN.A] A munkavégzés első napjának képzése az áthelyezett munkanapok figyelembe vétele nélkül.
    [ÁM] A munkavégzés idejére eső áthelyezett munkanapok száma. A KALK.MUNKANAP függvény eredményét ebben a számításban az át­he­lye­zett munkanapra eső utolsó munkanap nem befolyásolja!
    [EN.B] A munkavégzés első napjának képzése az áthelyezett munkanapok figyelembe vételével. A KALK.MUNKANAP „napok száma” ar­gu­men­tu­má­nak csökkentése az áthelyezett munkanapok darabszámával.
    [EN.E] Az első nap számításnál azok a munkavégzések okoznak zavart, amelyek első napja áthelyezett munkanapra esik. Az EN.A szá­mí­tás ezeknél a munkavégzéseknél pénteki dátumot eredményez. Az áthelyezett munkanapokkal kiegészített számítás (EN.B) vi­szont egy hét­fő­i napot ad. Ezért szükséges az EN.B hétfők ellenőrzése: szerepel-e a dátumot megelőző második nap az áthelyezett munkanapok kö­zött.
    [EN.C] Az első nap dátumának módosítása, ha az ellenőrzés egyet (IGAZ) ad eredményül: az EN.B számítás eredményéből levonunk ket­tőt.
    Mindkét függvénynek van INTL-es változata, amelyek „egyéni” pihenőnapokkal is tudnak számolni.
hetek és napok sorszáma
Pontosabban a hetek sorszáma az évben, illetve a napok sorszáma a héten. Vegyük először a hetek sorszámozását. A számozás egyes­sel kezdődik és az első hét a… De, melyik is?
    Ez nem kérdés! Hát a január elsejét tartalmazó hét. Igen-igen, de, ha mondjuk a január elseje szombatra esik, akkor az első hét két­na­pos!? Ez hétnek elég csenevész! A probléma kezelésére vezették be azt a rendszert, amelyben az év első hete az a hét, amely leg­a­lább négynapos. A január elsejei verziót egyes rendszernek [1], a legalább négynapost kettes rendszernek [2] nevezzük. Az EU-ban a kettes rendszer használata az előírás.
    Most már tisztáztuk, hogy melyik az év első hete, de azt még nem, hogy valójában mi szükségünk van erre a sorszámra. Statisztikák készítéséhez! „Készítsen egy diagramot az éves árbevételünkről Piroska, heti bontásban!” Tehát vannak dátumokhoz köthető be­vé­te­le­ink és meg kell állapítanunk a dátumokat tartalmazó hetek sorszámát…
    Ennek meghatározásához két függvényt használhatunk, a HÉT.SZÁMA és az ISO.HÉT.SZÁMA függvényeket. A HÉT.SZÁMA mindkét rend­szert alkalmazni tudja. Első argumentuma a dátum, a második a használandó rendszert deklaráló szám: egyes rendszer a kettes (2), a kettes rendszer a huszonegyes (21). Az ISO.HÉT.SZÁMA függvény csak a kettes rendszert „ismeri”. Ezért nincs is második argumentuma. Csak a hetet meghatározó dátumot kell megadnunk neki.
a DÁTUM függvény argumentumainak feldolgozása
A legalább négynapos szabályt alkalmazó kettes rendszerben az elsejét tartalmazó hét csak akkor lesz az év első hete, ha elseje hét­fő­re, keddre, szerdára vagy csütörtökre esik. Ezeket az eseteket kék színnel formáztam.
    A napok sorszámozásánál is felmerül a kérdésre, melyik naptól kezdődjön a számozás: vasárnaptól vagy hétfőtől. És az első sor­szám nulla legyen vagy egy? Az EU-s előírás a hétfő és az egyes, de függvényünk a HÉT.NAPJA minden variációban működik. Első ar­gu­men­tu­ma a dátum, amelynek sorszámát keressük, a második a pedig a sorszámozás módját előíró szám. Az EU-s szabvány a kettes (2).
    Állítsunk össze egy képletet, amely mindig a következő hét hétfőjének dátumát mutatja. Az első gondolatunk: sorszámok egytől hé­tig…, mindegyikkel más művelet…, VÁLASZT függvény. De, ha egy kicsit filózunk: mindig hét nap…, hány nap telt el a hétből…, hány nap van még hátra a hétből… nem kell a VÁLASZT.
az IDŐ függvény argumentumainak feldolgozása
A VÁLASZT függvény első argumentuma egy hivatkozás vagy egy kifejezés, amely egytől kezdődő sorszámot szolgáltat. A további ar­gu­men­tu­mai az egyes sorszámokhoz rendelt műveleteket határozzák meg. A tovább gondolt képlet a filózós képlet általánosítása. Ha a nap­ról-nap­ra változó MA() függvénnyel működik a képletünk, akkor tetszőleges dátummal is működnie kell.
  ismertető letöltése pdf-ben   munkafüzet letöltése
margitfalvi.arpad@gmail.com