Vissza az előzőleg látogatott oldalra (nem elérhető funkció)Vissza a tananyag kezdőlapjára (P)Ugrás a tananyag előző oldalára (E)Ugrás a tananyag következő oldalára (V)Fogalom megjelenítés (nem elérhető funkció)Fogalmak listája (nem elérhető funkció)Oldal nyomtatása (nem elérhető funkció)Oldaltérkép megtekintése (D)Keresés az oldalon (nem elérhető funkció)Súgó megtekintése (S)

Tehetséggondozás az informatikában - Táblázatkezelés / Dátum- és időkezelés

Dátum- és időkezelés

Habár dátum- és időkezelésre középszintű érettségin és ECDL-vizsgán is szükség van, és így alapszintű ismeretnek számít, úgy gondoltam, mégis megéri ezt a témakört átismételni. Annak ellenére, hogy igazából egy cellaformázási beállításról van szó, mégis külön fejezetet kapott, ahelyett, hogy a Cellaformázás egy alfejezete lenne. A tapasztalatom ugyanis az, hogy nagyon sok diák fejében téves elképzelések élnek, melyekkel számos esetben sokáig "ki is húzzák". Gyakori, hogy a könnyebb feladatokat sikeresen meg tudják oldani, ezért aztán nem értik, hogy nehezebb feladatok esetén miért nem működik a "megoldásuk". Az alapvető problémát a cella tartalmának és formátumának összemosódása okozza, ami habár általános probléma, de tipikusan dátumok esetén jelentős.

Lássunk egy konkrét példát! Ha azt látni egy cellában, hogy "2012. június 30.", néhányan azt hiszik, hogy ez a cella tényleges tartalma, vagyis egy szöveg. Ez már csak azért is rossz szemlélet, mert akkor például a "2012.06.30." már egy másik érték lenne, holott tudjuk jól, hogy csak a cellaformázás ablakában választottunk egy másik megjelenítési formát. Még egyébként ez is rendben van a többségnél. Ami viszont tényleg sokak számára kérdés, hogy "akkor mi is van valójában abban a cellában?".

Ennek megválaszolására sok más formátum esetén jó módszer, ha megnézzük, mi van a szerkesztőlécen, amikor a cellán állunk. Dátum formátum esetén ez sajnos nem működik. Próbáljuk akkor ki, hogy mi történik, ha a dátumot tartalmazó cella formátumát általánosra állítjuk! Azt látjuk, hogy "41090", melyből arra következtethetünk, hogy valójában egy számról van szó. Ez így is van: az Excel a dátumokat számként tárolja, melynek értéke független a megjelenített alakjától.

Fontos

Ne essünk azonban abba a hibába, hogy azt hisszük, az általános formátum mindig a cella valódi tartalmát mutatja!

Sokáig nehézséget okozott a dátumok kezelése az informatika világában, és habár vannak elterjedt módszerek a probléma megoldására, gyakori, hogy különböző programok eltérően kezelik a dátumokat. A bonyodalmat az okozza, hogy ezeket a dátumokat nem csak megjeleníteni szeretnénk, de számolni is kell velük. Például: hány nap telik el "január 1." és "március 1." között? Január "31" napos, február "28", így a válasz "59", feltéve, hogy nem szökőévről beszélünk. Látható, hogy az ilyen jellegű kérdésekre így elég nehézkes lehet választ adni, nem is beszélve a dátumok eltárolásának problematikájáról. Az Excel esetében a módszer a következő: "1900. január 1"-jét "1"-gyel azonosítjuk, "1900. január 2"-át "2"-vel, és így tovább, minden naphoz tartozik egy sorszám. Ezzel könnyű megválaszolni az előbbi kérdést és még sok hasonlót is. A "konverzió", vagyis az általunk használt formátumban való megjelenítés az Excel dolga, így nekünk igazából nem muszáj a számokkal dolgoznunk, de mindenképp ismerni kell, mi áll a háttérben!

Megjegyzés

Létezik "0." sorszám is, melyhez az egyébként nem létező "1900. január 0." dátum tartozik.

Ami a már emlegetett félreértéseket tovább súlyosbíthatja, hogy úgy tűnik, az Excel nem túl következetes az átalakítások, illetve típusfelismerések terén. Ha egy általános formátumú cellába beírunk egy dátumot, a hagyományos éééé.hh.nn. formátumban, kivétel nélkül felismeri, és az ehhez tartozó számot tárolja el. Ugyanakkor, ha más formátummal adjuk meg, sokszor csak szövegként tárolja el. Ami pedig még ennél is rosszabb, hogy időnként az olyan szöveget is dátumnak észleli, amit nem is annak szántunk, tipikusan, ha pont van benne. Ha ilyenkor nem vesszük időben észre a hibát, akár végleg elveszthetünk számunkra fontos adatokat. Importálást követően ezért mindig át kell nézni az adatokat, és olykor felülbírálni az Excel döntéseit.

Mint írtam, az "1900.01.01." az a dátum, amit "1"-gyel azonosítunk. Fejtörést okozhat, ha ennél korábbi dátumokkal kell dolgoznunk, hiszen azok kezelésére az Excel sajnos nem képes. Erre a problémára és egy lehetséges megoldására mutatok egy példát a következőkben.

Példa

6. példa: Nemes 2010-2011 1. forduló, 5/A, B (A szabadságharc kronológiája)

Ez a feladat is az adatok importálásával kezdődik, itt azonban dátumok importálásáról van szó, melyekkel tovább is kell majd dolgozni, tehát ügyelni kell rá, hogy a dátumok tényleg helyes értékkel rendelkezzenek, és ne csak jónak látszódjanak.

Csakúgy, mint a 3. példában, a forrás egy weblap.

Megjegyzés

Bővebben a szökőévekről itt.

Megjegyzés

Aki a LibreOffice Calcját használja, annak jóval könnyebb a dolga, ha "1900.01.01." előtti dátumokkal kell dolgoznia: ezeket a "korai dátumokat" ugyanis egyszerűen negatív számokkal azonosítja a program. Lehetőség van továbbá a "0. nap" dátumának kiválasztására, ami kompatibilitási problémákat oldhat meg.

Az eddig leírtak után talán senkinek nem okozok meglepetést azzal, ha elárulom: az időpontokat is számként tárolja el az Excel. Az viszont már lehet, hogy néhányaknak meglepetést okoz, hogy valójában minden dátum egyben időpont is, és minden időpont egyben dátum is. Akkor vajon miért beszélünk róluk külön? Hiszen igazából csak az a fontos, hogy az adott "dátum+időt" dátum, vagy idő formátumban jelenítjük meg. Gondoljunk csak bele: adott két esemény időpontja, például "2012.10.31. 17:36" és "2012.11.20 16:00". Az Excelnek természetesen képesnek kell lenni válaszolnia arra a kérdésre, hogy mennyi idő telt el a kettő közt. Ha a napokra vagyunk kíváncsiak, a válasz "19". Ha az órákra is, akkor "19 nap és 22 óra", vagy esetleg egyszerűen csak "478 óra". Így már talán érthető, hogy a feladatok sokfélesége miatt nem megengedhető, hogy egy ilyen jellegű program külön kezelje a dátumokat és az időket.

Kérdés, hogy akkor vajon hogy oldja meg, hogy egy eltárolt számból ne csak a hozzá tartozó dátumot, de az időt is megkapjuk. A megoldás nagyon egyszerű: valós számokkal. A valós szám egész része tartalmazza a dátumra vonatkozó információt, míg a törtrésze az időpontra vonatkozót. Így megoldhatóak a fentihez hasonló műveletek, melyek eredménye egy újabb szám. Amennyiben csak a napokra vagyunk kíváncsiak, olyan formátumot kell választani, ami csak a szám egész részét mutatja meg, megfelelően átalakítva. Ettől még ott van a tört rész is, csak nem látjuk.

Próbáljuk ki a következőt!

A megjelenített érték "00:00:00". Ennek az oka, hogy amíg a szám egész részét adtuk meg, addig később annak törtrészét jelenítettük meg, ami nulla, mivel nem adtunk meg.

Ez természetesen fordítva is így van:

Amit látunk: "1900. január 0.", hiszen a tizedes tört egész része nulla maradt.

Összefoglalás

Mint ezt a 6. példában is tapasztaltuk, "dátum+idők" importálásakor nagyon résen kell lennünk, mert olykor furcsa dolgok kerülhetnek a munkafüzetbe. Importálást követően mindig válasszunk egy dátumot és időt is megjelenítő formátumot, mielőtt tovább dolgoznánk, hogy ellenőrizhessük, minden rendben van-e!

Ügyelni kell arra is, hogy egy dátumnak érzékelt szöveg könnyen dátummá, vagyis számmá konvertálódik, így a cella eredeti tartalma, a szöveg, végleg elveszhet.

Az eddig leírtak megértését és a témakörhöz tartozó pár függvény gyakorlását segítendő, javaslom a 14. példa alapos áttanulmányozását. Érdemes továbbá a Cellaformázás fejezet bevezetőjét is átolvasni.

Vissza a tartalomjegyzékhez

Új Széchenyi terv
A projekt az Európai Unió támogatásával, az Európai Szociális Alap társfinanszirozásával valósul meg.
Készült az "Országos koordinációval a pedagógusképzés megújításáért” című TÁMOP-4.1.2.B.2-13/1-2013-0007 pályázat keretében.

A tananyag az ELTESCORM keretrendszerrel készült