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
DT.xlsm
(9.53 KiB) Staženo 25 x
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 :crazy:

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ř.:

Kód: Vybrat vše

=PREVED_DATUM(A1;"/")

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 :D

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