Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Excel: převod čísla na datum

Rád bych dosáhl toho, abych mohl datum v Excelu psát bez teček či jiných oddělovačů. Verze Excelu 2003/2007, ale to je asi jedno.

Tedy když napíšu 270715, aby Excel pochopil, že se jedná o datum 27.7.2015 (27.07.2015). Zkoušel jsem různé formáty, ale nedaří se mi to, asi i kvůli tomu, že Excel převádí datum na číslo, počínaje 1.1.1900. "270715" Excel rozpozná jako 10.3.2641. dBASE to umí, ale to mi teď nepomůže :)

Dá se to nějak vyřešit či šikovně obejít (klidně přes nějaký mezistupeň, pomocnou buňku)?

Možná by to mohlo jít nějak přes části buněk, aby první dvě číslice byly identifikovány jako den, další dvě jako měsíc a další dvě jako rok, kde se zároveň dopředu přidá "20" (potřebuji to jen pro roky 2000-2099). Pokud tedy něco takového existuje, nějak to nemohu najít :-/

Díky za tip

Předmět Autor Datum
ak 270715 je v A1, tak do B1 napíš: =IFERROR(IF(AND(LEN(A1)=6;ISNUMBER(VALUE(A1));AND( VALUE(MID(A1…
robert13 29.07.2015 13:56
robert13
Díky moc, pomohlo! :beer: To první mi ani po úpravách (odstranění mezer) nefungovalo, ale nevadí. M…
L-Core 29.07.2015 16:51
L-Core
Ok, ak by si chcel prvy vzorec funkcny, napis, poslem ti to v subore (teraz som na tablete). Ked si…
robert13 29.07.2015 18:05
robert13
Toho, kdo nařídil přeložit názvy funkcí do češtiny by měli pomalu a dlouho mučit3-[
jirka44 29.07.2015 18:06
jirka44
Já jsem si už zvykl, akorát se mi tam ekluje ta diakritika. Někdy bych rád viděl excel v perštině ne… poslední
L-Core 29.07.2015 20:18
L-Core
Jednoduchý překlad funkcí viz http://elcha-en.blogspot.cz/2015/01/easy-and-quick -formula-translatio…
Siki83 29.07.2015 18:11
Siki83
Alebo http://office.lasakovi.com/excel/funkce/ms-excel-f unkce-en-cz/
robert13 29.07.2015 18:20
robert13
prikladám súbor pre kontrolu použitých funkcií v českej jazykovej mutácii. P.S. Funkcie AND som nav…
robert13 29.07.2015 18:42
robert13
tak ešte jedna verzia (síce v angličtine, ale prikladám súbor): =IF(OR(ISERROR(CONCATENATE(LEFT(A1;…
robert13 29.07.2015 19:30
robert13

ak 270715 je v A1, tak do B1 napíš:

=IFERROR(IF(AND(LEN(A1)=6;ISNUMBER(VALUE(A1));AND( VALUE(MID(A1;3;2))>0;VALUE(MID(A1;3;2))<13);AND(VA LUE(LEFT(A1;2))>0;VALUE(LEFT(A1;2))<32));CONCATENA TE(LEFT(A1;2);".";MID(A1;3;2);".";RIGHT(A1;2));"Ne správny údaj");"Nesprávny údaj")

:-D
Vyzerá to hrozne, ale:

B1 už bude chápať ako dátum, takže môžeš z neho extrahovať rok: =YEAR(B1) mesiac: =MONTH(B1) deň: =DAY(B1), odpočítavať od iných dátumov a pod...

PRIČOM vzorec zisťuje aj:
- či je zadaný šesťmiestny reťazec
- či je reťazec zložený z číslic, aby ho mohol pochopiť pre vytvorenie dátumu
- či stredné dve číslice môžu reprezentovať mesiac, t.j. sú v intervale <1;12>
- či prvé dve číslice môžu reprezentovať deň, t.j. sú v intervale <1;31>

Z Tvojho formátu vyplýva, že v prípade jednociferných dní a mesiacov údaj dopĺňaš nulou na prvom mieste. Kvôli tomu je potrebné bunku do ktorej zadávaš svoj tvar formátovať ako text.

Chyba tohto vzorca: pripúšťa počet dní 31 pre všetky mesiace, to sa mi už nechcelo ošetrovať, keďže by bolo potrebné rozlišovať, o ktorý mesiac ide... ale pokiaľ bude výsledkom napr. 31.02.15 tak dátumové funkcie vrátia chybovú hlášku...

Ak si si istý, že Tebou zadaný tvar nebude chybný (z hľadiska správnych resp. prípustných hodnôt pre dni a mesiace), alebo to ošetríš cez chybovú hlášku ako v prípade vyššie uvedeného príkladu 31.02.15,tak sa celý vzorec zredukuje na:

=CONCATENATE(LEFT(A1;2);".";MID(A1;3;2);".";RIGHT( A1;2))

P.S. Horný vzorec platí od Excelu 2007, keďže 2003 ešte funkciu IFERROR nemala. Dalo by sa upraviť aj pre 2003 tak, že namiesto IFERROR by sa dalo IF(ISERROR....) ale vzorec by sa tým predĺžil na dvojnásobok, keďže raz by sa výraz testoval, či je jeho výsledkom chybová hodnota a v prípade, že nie, tak druhýkrát ten istý výraz pre vrátenie jeho hodnoty...)

Díky moc, pomohlo! :beer:

To první mi ani po úpravách (odstranění mezer) nefungovalo, ale nevadí. Možná jiná jazyková verze, mám český Excel 2007. Zaměřil jsem se na:

=CONCATENATE(LEFT(A1;2);".";MID(A1;3;2);".";RIGHT(A1;2))

které jsem upravil na konečné:

=CONCATENATE(ČÁST(A1;1;2);".";ČÁST(A1;3;2);".20";ČÁST(A1;5;2))

S left, mid a right mi to nefunguje, asi bych musel použít zleva a zprava.

"270515" v A1 vyhodí "27.05.2015" v B1.

Nemusím softwarově hlídat hodnoty den a měsíc.
Chybovou hlášku (pokud bych chtěl) si mohu vytvořit, když v pomocné buňce C1 zadám =B1+1. Pokud by B1 nepředstavovalo reálné datum, objevilo by se tam #HODNOTA (jinak, v mém příkladu, je tam "28. květen 2015"

Výsledek v příloze.

Ok, ak by si chcel prvy vzorec funkcny, napis, poslem ti to v subore (teraz som na tablete). Ked si ho otvoris, excel ti ho prelozi do ceskych vyrazov. Ale ak nepotrebujes vzorcom kontrolovat vstupnu hodnotu, tak to uz mas... A ako pises - odkontrolovat si mozes nepriamo - chybovou hlaskou v pomocnej bunke. :beer:

tak ešte jedna verzia (síce v angličtine, ale prikladám súbor):

=IF(OR(ISERROR(CONCATENATE(LEFT(A1;2);".";MID(A1;3 ;2);".20";RIGHT(A1;2))+1);LEN(A1)<>6);"chybný vstup";CONCATENATE(LEFT(A1;2);".";MID(A1;3;2);".20 ";RIGHT(A1;2)))

s využitím testu podľa L-Core, či funkcia dáva reálny dátum (bez kontroly zložiek vstupu a bez nedokonalosti v kontrole prípustnosti hodnoty dňa vzhľadom na mesiac), t.j. All In One bez pomocnej bunky! Heuréka! :-D

Zpět do poradny Odpovědět na původní otázku Nahoru