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")
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...)