Stránka 1 z 1
Převod data
Napsal: 25 črc 2012 08:39
od V.Hrzan
Hezké ráno. Už se pár hodin trápím s převodem dat, které jsem importoval z txt souboru. Ve sloupci A mám datumy ve formátu m/dd/rrrr h:mm:ss PM(AM) a potřebuji datum převést do formátu dd:mm:rrrr hh:mm:ss se zohlednením AM a PM, tjst aby se pří PM přičetlo oněch 12hodin. A aby toho nebylo málo, tak bych ještě potřeboval převést číslo ve formátu 9.600000E-2 na 9,600000E-2 eventuelně na 0,096. Zkoušel jsem to přes formát buňky, pokoušel jsem se o makro a o převod pomocí nejrůznějších funkcí. Bohužel bezúspěšně. Máte někdo ideu jak na to?
Re: Převod data
Napsal: 25 črc 2012 09:20
od d1amond
A ty chceš z toho času získat 12h formát nebo 24h formát? To jde zcela normálně přes formát buňky.
Re: Převod data
Napsal: 25 črc 2012 09:25
od Azuzula
A z desetinné tečky na desetinnou čárku stačí funkce "Najít a nahradit" zkratka je ctrl+f
Re: Převod data
Napsal: 25 črc 2012 11:41
od V.Hrzan
d1amond píše:DT.xlsm
A ty chceš z toho času získat 12h formát nebo 24h formát? To jde zcela normálně přes formát buňky.
Tohle jsem taky zkousel, ale ja mam datum ve formatu: 6/20/2012 7:13:14 PM ty jsi to upravoval pro 25.7.12 11:55:58 PM. Dělaj mi tam bordel ty lomítka

Re: Převod data
Napsal: 25 črc 2012 11:53
od Azuzula
i na tohle jde použít funkce Najít a nahradit jak už jsem psala předtím

lomítko nahradíte za tečku
Re: Převod data
Napsal: 01 srp 2012 08:02
od V.Hrzan
tím se sice zbavím lomítka, ale datum stale zustane v neprevoditelnem formatu. stále mám prohozené dny a měsíce.
Re: Převod data
Napsal: 01 srp 2012 08:33
od Azuzula
V tom případě bych použila třeba vzorce na rozložení jednotlivých částí data, ale na to jsou potřeba 4 různé vzorce a nebo můžu napsat funkci na převod.
Re: Převod data
Napsal: 01 srp 2012 08:53
od cmuch
Tady by byl jeden vzorec. Ex2003.
Předpoklad je ten, že v buňce musí být datum i s časem (v jakémkoli formátu).
Kód: Vybrat vše
=CONCATENATE((ČÁST(A2;(HLEDAT(".";A2;1))+1;((HLEDAT(".";A2;(HLEDAT(".";A2;1))+1))-(HLEDAT(".";A2;1)))-1));".";(ČÁST(A2;1;(HLEDAT(".";A2;1))-1));".";(ZPRAVA(A2;(DÉLKA(A2))-(HLEDAT(".";A2;(HLEDAT(".";A2;1))+1)))))
Platí pro datum v A2
Re: Převod data
Napsal: 01 srp 2012 09:03
od Azuzula
Zakomponovat funkci hledat mě nenapadlo, ale nevím kde se vzala ta funkce ZPRAVA, mě to píše "Tato funkce není platná."
--- Doplnění předchozího příspěvku (01 Srp 2012 09:28) ---
Napsala jsem funkci na převod toho data s prohozením dnů a měsíce. Funguje snad na všechny formáty. Počítá i s časem ve všech formátech jak 12 hodinový tak i 24 hodinový.
Kód: Vybrat vše
Function PREVED_DATUM(vstup As String, oddelovac As String) As Date
'otočí v datumu den s měsícem z data "mm/dd/rrrr" i "mm/dd/rrrr hh:mm:ss" vč. neúplného zápisu času nebo v 12h formátu
If Mid(vstup, 2, 1) = oddelovac And Mid(vstup, 5, 1) = oddelovac Then
If Mid(vstup, 8, 1) = " " Then
PREVED_DATUM = Mid(vstup, 3, 2) & "." & Mid(vstup, 1, 1) & "." & Mid(vstup, 6, 2) & " " & Mid(vstup, 9, 8)
Else
PREVED_DATUM = Mid(vstup, 3, 2) & "." & Mid(vstup, 1, 1) & "." & Mid(vstup, 6, 4) & " " & Mid(vstup, 11, 8)
End If
ElseIf Mid(vstup, 3, 1) = oddelovac And Mid(vstup, 5, 1) = oddelovac Then
If Mid(vstup, 8, 1) = " " Then
PREVED_DATUM = Mid(vstup, 4, 1) & "." & Mid(vstup, 1, 2) & "." & Mid(vstup, 6, 2) & " " & Mid(vstup, 9, 8)
Else
PREVED_DATUM = Mid(vstup, 4, 1) & "." & Mid(vstup, 1, 2) & "." & Mid(vstup, 6, 4) & " " & Mid(vstup, 11, 8)
End If
ElseIf Mid(vstup, 3, 1) = oddelovac And Mid(vstup, 6, 1) = oddelovac Then
If Mid(vstup, 9, 1) = " " Then
PREVED_DATUM = Mid(vstup, 4, 2) & "." & Mid(vstup, 1, 2) & "." & Mid(vstup, 7, 2) & " " & Mid(vstup, 10, 8)
Else
PREVED_DATUM = Mid(vstup, 4, 2) & "." & Mid(vstup, 1, 2) & "." & Mid(vstup, 7, 4) & " " & Mid(vstup, 12, 8)
End If
ElseIf Mid(vstup, 2, 1) = oddelovac And Mid(vstup, 4, 1) = oddelovac Then
If Mid(vstup, 7, 1) = " " Then
PREVED_DATUM = Mid(vstup, 3, 1) & "." & Mid(vstup, 1, 1) & "." & Mid(vstup, 5, 2) & " " & Mid(vstup, 8, 8)
Else
PREVED_DATUM = Mid(vstup, 3, 1) & "." & Mid(vstup, 1, 1) & "." & Mid(vstup, 5, 4) & " " & Mid(vstup, 10, 8)
End If
End If
End Function
Opravená funkce, bere jakýkoliv formát data od mm.dd.rrrr po m.d.rr vč. času v jakémkoliv formátu.
Vzorec pak bude vypadat např.:
pro datum v buňce A1 s oddělovačem "/"
Re: Převod data
Napsal: 01 srp 2012 11:08
od cmuch
Zakomponovat funkci hledat mě nenapadlo, ale nevím kde se vzala ta funkce ZPRAVA, mě to píše "Tato funkce není platná."
Bylo to vytvořeno v Ex2003. Třeba v Ex2007 a 2010 je to jinak.
A u té fce musí být zaručeno dd.mm.rrrr hh:mm , pokud nekdo bude zapisovat datum jen d.m.rrrr tak to nebude fungovat.
Ta má fce to brala vše. Zkusím se na to podívat doma na Ex2010.
Re: Převod data
Napsal: 01 srp 2012 11:20
od Azuzula
Právě že jsem tam ošetřila všechny 4 možnosti kombinace dnů a měsíců. Ale když bude rok v dvoučíselném formátu tak to nebude fungovat, ještě to doladím.
--- Doplnění předchozího příspěvku (01 Srp 2012 11:33) ---
Opravila jsem tu původní funkci v předchozím příspěvku
Re: Převod data
Napsal: 01 srp 2012 13:16
od cmuch
Tak jsem to zkoušel v Ex2007 a jde to tam taky.
Kód: Vybrat vše
=CONCATENATE((ČÁST(A2;(HLEDAT(".";A2;1))+1;((HLEDAT(".";A2;(HLEDAT(".";A2;1))+1))-(HLEDAT(".";A2;1)))-1));".";(ČÁST(A2;1;(HLEDAT(".";A2;1))-1));".";(ZPRAVA(A2;(DÉLKA(A2))-(HLEDAT(".";A2;(HLEDAT(".";A2;1))+1)))))
--- Doplnění předchozího příspěvku (01 Srp 2012 19:14) ---
Tak ex2010 nezná
ZPRAVA ale zná
VPRAVO
Kód: Vybrat vše
=CONCATENATE((ČÁST(A2;(HLEDAT(".";A2;1))+1;((HLEDAT(".";A2;(HLEDAT(".";A2;1))+1))-(HLEDAT(".";A2;1)))-1));".";(ČÁST(A2;1;(HLEDAT(".";A2;1))-1));".";(VPRAVO(A2;(DÉLKA(A2))-(HLEDAT(".";A2;(HLEDAT(".";A2;1))+1)))))