Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 26. 6. 2013 09:19:22

rotvailer
Člen
Registrace: 26. 6. 2013
Příspěvků: 1

Datum - format

Můžete prosím poradit jak se da naformatovat datum do tvaru: DD.MM.YYYY . Nabízí mi to sice možnost 31.12.1999, dokonce 3x, ale výsledek je stále 1.1.1999. Děkuji za radu.

Offline

#2 26. 6. 2013 09:44:19

luka7
Člen
Registrace: 20. 5. 2009
Příspěvků: 84

Re: Datum - format

FORMÁT BUŇKY->DATUM  a přepsat formátovací kód...

Offline

#3 26. 6. 2013 11:55:33

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Datum - format

Mám spíš dojem, že jde o nepochopení jedné maličkosti. Pokud tam chcete mít konkrétní formát, pak tam také potřebujete konkrétní zadání.
- Datum je v originále jen číslo, které se připočítává po jedné - tedy co den to jednička. První jednička vyhodí datum 31.12.1899. Tedy přehledněji:
-1 = 29.12.1899 (málo kdo ví, že datum funguje i do mínusu)
0 = 30.12.1899
1 = 31.12.1899
2 = 1.1.1900
41451 = 26.6.2013
- Vlastní formát data je sice nastaven, ale dá se měnit jak uvádí luka7.
- D.M.YYYY = 31.12.1999;
- NNNNDD. MMMM YYYY = pátek, 31. prosinec 1999
- D. MMM YY = 31.XII.99
- QQ YY = 4. čtvrtletí 99
nebo včetně času :
- DD.MM.YYYY HH:MM:SS ... a tak dál.
Můžete si udělat i vlastní formát.
Samozřejmě v žádném z těchto případů nejde o automatické datumové razítko. Údaj v buňce musíte vyplnit a sice buď číslem, nebo formátovaným datem.


    Funkce datumového razítka je implementovaná do Writeru, ale v Calcu ne - alespoň ne v té podobě jako má Writer (Vložit speciální pole). Není to sice v nabídce (menu item-u), ale je to jako vestavěná funkce, kterou zavoláte =NOW() . Při tom pozor: na první pohled jsou tam jen křížky. Není to chyba, tahle funkce vrací právě formát DD.MM. HH:MM:SS - tedy den, měsíc a ještě čas. To je dlouhé a musíte zvětšit šířku buňky.
    Jde o aktuální čas počítače, takže pokud má Váš počítač správně nastaven systémový čas, je tento v relaci s tím objektivně uznávaným. Pokud máte například problémy s baterií na boardu (stará deska - vybitá baterie) budete muset po zapnutí čas a datum růčo nastavovat - znám to dobře sad

Editoval neutr (26. 6. 2013 12:28:26)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#4 26. 6. 2013 15:16:04

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 842

Re: Datum - format

neutr napsal(a)

-1 = 29.12.1899 (málo kdo ví, že datum funguje i do mínusu)

Ale asi málokdo z těch co to ví ví, že to nefunguje úplně korektně a v různých verzích to je navíc různé a v každém případě je podpora zatím nekonzistentní.

Zhruba do roku 1600 to ještě jde - pomíjím různé roky přechodu od juliánského kalendáře. Před 15.10.1582 se při zobrazování správně vynechá 10 dnů, ale funkce year, month, day to nevynechávají.
Dále se při zobrazování počítá s přestupnými roky,ale zmíněné funkce (zdá se) je vynechávají. Při přechodu před letopočet se zmíněné funkce a zobrazování totálně rozcházejí. Pomíjím to, že jsem zatím nenašel jednoduchý způsob, jak zadat datum před rokem 100 n.l. (číslem to zadat jde a něco se zobrazí), ale třeba i funkce date(1;1;1) vrátí 1.1.2001 - je to logické, protože funkce date umí zadat nejdříve 15.10.1582.

I tak je to ale lepší, než vkládat datumy textově, ale na počítání to není.

Offline

#5 18. 11. 2018 12:00:44

Fastarrow
Člen
Registrace: 8. 3. 2015
Příspěvků: 6

Re: Datum - format

Cau a díky za vysvětlení čísla v tvém příkladu "41451".
Konečně vím, proč se mi zobrazuje číslo místo data. Ale řeším jiný problém. Převedl jsem si datum na tvar "20181116" přes format buňky. A teď si potřebuju toto datum vložit do řetězce "něco_datum_něco" pomocí fce CONC a mně se převede "něco_43420_něco". Jak ho donutit, aby tam bylo datum ve formátu 20181116?

Díky moc!

George

neutr napsal(a)

Mám spíš dojem, že jde o nepochopení jedné maličkosti. Pokud tam chcete mít konkrétní formát, pak tam také potřebujete konkrétní zadání.
- Datum je v originále jen číslo, které se připočítává po jedné - tedy co den to jednička. První jednička vyhodí datum 31.12.1899. Tedy přehledněji:
-1 = 29.12.1899 (málo kdo ví, že datum funguje i do mínusu)
0 = 30.12.1899
1 = 31.12.1899
2 = 1.1.1900
41451 = 26.6.2013
- Vlastní formát data je sice nastaven, ale dá se měnit jak uvádí luka7.
- D.M.YYYY = 31.12.1999;
- NNNNDD. MMMM YYYY = pátek, 31. prosinec 1999
- D. MMM YY = 31.XII.99
- QQ YY = 4. čtvrtletí 99
nebo včetně času :
- DD.MM.YYYY HH:MM:SS ... a tak dál.
Můžete si udělat i vlastní formát.
Samozřejmě v žádném z těchto případů nejde o automatické datumové razítko. Údaj v buňce musíte vyplnit a sice buď číslem, nebo formátovaným datem.


    Funkce datumového razítka je implementovaná do Writeru, ale v Calcu ne - alespoň ne v té podobě jako má Writer (Vložit speciální pole). Není to sice v nabídce (menu item-u), ale je to jako vestavěná funkce, kterou zavoláte =NOW() . Při tom pozor: na první pohled jsou tam jen křížky. Není to chyba, tahle funkce vrací právě formát DD.MM. HH:MM:SS - tedy den, měsíc a ještě čas. To je dlouhé a musíte zvětšit šířku buňky.
    Jde o aktuální čas počítače, takže pokud má Váš počítač správně nastaven systémový čas, je tento v relaci s tím objektivně uznávaným. Pokud máte například problémy s baterií na boardu (stará deska - vybitá baterie) budete muset po zapnutí čas a datum růčo nastavovat - znám to dobře sad

Offline

#6 18. 11. 2018 17:35:49

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Datum - format

Tohle jen tak snadno nejde obejít. Musí na to být funkce. Jednu jsem vytvořil. Chová se jako vzorec který musíte vložit do buňky hned vpravo od toho datumu. Udělá z toho "formátovaného čísla" číslo ale v textovém tvaru - tedy formát "@" který manuálně zadat přes formát datum (nebo i čas) nelze.


    Musíte v té vedlejší buňce zadat =NUM_TEXT() a entrovat - chová se to jako normální vzorec. Jde také o to, že tato funkce může být jen v jediném určitém sešitu, nebo nad všemi různými sešity. To podle toho kam ji nakopírujete. Když ji nakopírujete do knihovny "Moje makra STANDARD" která je nad všemi i nově otevřenými sešity tak bude fungovat v každém sešitě.
    Když ji dáte do modulu, který patří jen určitému sešitu, tak bude fungovat jenom v tom jediném. Takže je na Vás kam to dáte. Raději popíšu postup vložení do nadřazených maker nad všemi sešity :
    NÁSTROJE > SPRÁVCE MAKER > LIBRE OFFICE BASIC > MOJE MAKRA STANDARD (pokud tam nemáte žádné makro tak po rozkliknutí uvidíte "Modul1" a ten po rozklikutí obsahuje makro "Main". Pod něj nebo nad něj (ale i místo něho)vložíte kód který je zde :

Public Function NUM_TEXT
Dim sVar, sVal as string
Dim iVar as integer
SH = ThisComponent.CurrentController.ActiveSheet
AC = ThisComponent.CurrentController.getSelection().RangeAddress.StartColumn 
AR = ThisComponent.CurrentController.getSelection().RangeAddress.StartRow 
sVar = SH.getCellByPosition(AC-1,AR).string
For i = 1 To Len(sVar)
sVal = sval & MID(sVar,i,1)
Next i
SH.getCellByPosition(AC,AR).String = sVal
End Function

     Ještě raději upozorňují, že po vložení kódu musíte v editoru maker uložit (jinak po zavření sešitu funkce zmizí) - jde to pomocí ikony diskety. Potom teprve můžete editor zavřít a testovat v sešitech kde je libo. Podmínkou je těsně za datum (ale i každé jiné číslo!) vložit ten vzorec =NUM_TEXT() + enter to je vše. Přeji úspěch.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#7 18. 11. 2018 19:33:39

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Datum - format

Ještě mi došlo oč Vám vlastně opravdu jde. Potřebujete udělat do názvu nějakého souboru něco s datumovým razítkem nejlépe asi upravit funkci NOW() která má datum a čas HH:MM:SS.

Fastarrow napsal(a)

Cau a díky za vysvětlení čísla v tvém příkladu "41451".
Konečně vím, proč se mi zobrazuje číslo místo data. Ale řeším jiný problém. Převedl jsem si datum na tvar "20181116" přes format buňky. A teď si potřebuju toto datum vložit do řetězce "něco_datum_něco" pomocí fce CONC a mně se převede "něco_43420_něco"....... Jak ho donutit, aby tam bylo datum ve formátu 20181116?

     Já jsem to dořešil jen k té fázi, kdy lze použít CONCAT, respktive CONCATENATE. Při tom udělat podobu na datumové razítko lze hned z běžného formátu NOW(), nebo TODAY() a podobně. Dá se udělat hned do tvaru který potřebujete a menusíte upravovat dopředu formát tím že zadáte anglosaské datumování bez teček. příklad :
18.11.2018 = 18-11-2018 nebo 18-11-20-18 a nebo třeba 20-18-11-18, ale také třeba 2a0k1s8w1r1u1z8


      Takže pokud jde o takové možnosti je jich přehršel - stači specifikovat, ale to asi bude Vaše výrodní tajemství, takže se CONCAT respektive "&" vystačíte. Já to dělám velice často v makrech a zpaměti tak mne ani nenapadlo, že by to někdo dělal vzorcem :-)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#8 19. 11. 2018 01:06:08

Fastarrow
Člen
Registrace: 8. 3. 2015
Příspěvků: 6

Re: Datum - format

Díky vyzkouším to a napíšu. Nechci zakládat další téma, ale můžeš mi pls poradit v čem je problém, kdy použiju DDE objekt mezi writerem a calcem, tak po zavření a opětovneém otevření writeru to nefunguje?? To musím šablonu vyrobit pokaždé znovu a znovu jen kvuli tomu, že zavřu dokument a hned otevřu? (bez změny jakýchkoliv názvů souboru či umístění). Hledal jsem všude možně i na anglických stránkách, ale nedobral jsem se nějakého řešení. Kdybys věděl jak na to budu moc rád!
Díky

Offline

#9 19. 11. 2018 05:53:15

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Datum - format

Toto je opravdu hodně daleko od původního tématu a já bych doporučil otevřít nové vlákno v sekci Writer. Ale mohlo by jít o problém Calc > Writer, Calc < Writer nebo naopak Writer > Calc, respektive Writer < Calc. Tyto relace existují vzhledem k možnosti řetězit navázané DDE. Tedy lépe řečeno je možné vytvořit cyklické vazby kdy se z jednoho zdroje změní výchozí veličina která zmení parametry v jiném dokumentu a ten zpětně vrátí výchozímu dokumentu nové hodnoty
     Writer < Calc pomocí DDE je častou potřebou při tvorbě šablon. Ale zde musíme chápat DDE ve spojitosti se speciálními poli kterých je ve Writeru relativně hodně. Problém bude možná právě v pochopení, že nativně vložené DDE ve formě hodnoty tahané z Calcu musí být na kotvě dané speciálním polem. Dělá se to i s obrázky. Ovšem zde se jedná o objekty stejně jako u OLE které lze také tahat z Calcu.
     Writer < DDE (hodnota vs. objekt) < Calc je široký pojem a pro mne celkem "libové téma" od rekurzívních volání až po možné chyby spojení. Vždy jde ale o celkem složitý problém. Většinou jde o to, že se Calc musí nastavit jako zdrojová databáze.



     Vidíte že to asi nebude jednoduché takže opravdu předchozí článek nadepište "přesunuto" a tagujte na nové téma ve Writeru. Zbytek upravte takto : Odstraněný text. Jak se to dělá se podívejte v okénku kde se píše odpověď a kde je modře napsáno kódy BBCcode


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#10 19. 11. 2018 08:48:53

kabi
Člen
Registrace: 1. 6. 2017
Příspěvků: 167

Re: Datum - format

to Fastarrow: to datum do textového řetězce dostanete pomocí funkce TEXT. Např. CONCATENATE(něco;TEXT(datum;"YYYYMMDD");něco)

Offline

#11 19. 11. 2018 15:25:41

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Datum - format

Kabi to je správně viz ukázka kde je symbolicky datum ale ve skutečnosti vzorec TODAY() :
datum|<=A1/C1=>| něco jako datum = 20181119 |<=C1/Vzorec=>|=CONCATENATE("něco jako datum = ";TEXT(A1;"YYYYMMDD"))
datum|<=A2/C2=>| něco20181119něco |<=C2/Vzorec =>| =CONCATENATE("něco";TEXT(A2;"YYYYMMDD");"něco")
    Problém to řeší podle zadání dobře všechna čest kabi. Jenom se to hlásí stále jako formát buňky "číslo", ale už se to dá na rozdíl od přímého řešení jednoduše zkopírovat a vložit jen jako text. Právě tohle v čistém tvaru datumu nelze udělat i když bych se vsadil, že právě tohle kdysi chodilo - načíst a vložit zpět jenom jako text.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#12 22. 11. 2018 11:31:33

kabi
Člen
Registrace: 1. 6. 2017
Příspěvků: 167

Re: Datum - format

to neutr: je pochopitelné, že žádný textový řetězec, konstruovaný vzorcem, nemůže mít formát buňky "text", přesto jsou to běžné konstrukce. Proč máte potřebu nebo v čem vidíte výhodu, když ten řetězec ještě přeuložíte do buňky formátované jako "text"?

Offline

#13 22. 11. 2018 18:08:54

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Datum - format

kabi napsal(a)

to neutr: je pochopitelné, že žádný textový řetězec, konstruovaný vzorcem, nemůže mít formát buňky "text", přesto jsou to běžné konstrukce. Proč máte potřebu nebo v čem vidíte výhodu, když ten řetězec ještě přeuložíte do buňky formátované jako "text"?

     Ono to jistě jedno není. Číslo bude vždy číslem a bude ragovat na všchny operace které čísla umí. Aby se ale dalo číslo rozdělit jako řetězec, musí to být text. (Jen si vzpomeňte na to co dělají XML filtry když potkají tečku mezi číslicemi a není použit správný filtr - už to tady bylo vícekrát a myslím že i Vy jste na to kdysi narazil.)
     Tady jde ale spíš o možnost nechtěné operace s číslem při volání buňky. Jde tedy o obecnější princip. A hlavně když by to bylo zbytečnost tak se to neobjeví mezi formáty buňky na různých pozicích. Přestože víme, že někdy lze počítat i s čísly ve formátu "text"! - Posuďte jednoduché rozdělení na půlky pomocí řetězců respektive funkcí LEFT() A RIGHT(). No a potom si to zkopírujte na další řádek pomocí Ctrl+C => Ctrl+V. V kopii uděláme chybu. Vidíte že je to stále formát datum :

	 |Today	   |Váš vzorec	    |levá půlka =>vzorec ||pravá půlka =>vzorec	
Originál 22.11.2018|něco20181122něco|něco2018|=LEFT(C3;8)||1122něco|=RIGHT(C3;8)
Kopie	 22.11.2018|něco18991230něco|něco1899|=LEFT(C4;8)||1230něco|=RIGHT(C4;8)
...Ve vzorci kopie je chyba - odkaz na prázdný řádek - tím ukazuji možnou chybu.

     Ale ta chyba může vzniknout úplně jinak zejměna pokud by se řetězilo, nebo tam byly nějaké aritmetické operátory. Takže alespoň vědět, že taková situace může nastat by měla každému dát vysvětlení proč text a ne číslo.


PS :
Podle mne by to co požaduje autor - by měla být chyba LO/AOO.
     Existuje volba v dialogu "Vložit jinak". Tam by po zaškrtnutí jen "číslo" mělo zůstat číslo, po začkrtnutí jen text - tak by to měla být forma textu (to co požaduje autor), a když formát - tak prostě format datum/čas předvolený, nebo explicitní.

Editoval neutr (22. 11. 2018 18:52:46)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#14 24. 11. 2018 18:28:12

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 842

Re: Datum - format

@neutr

Ten poslední příspěvek jsem nepobral. Pochopil jsem, že při kopírování vzorců může vzniknout chyba a že se jí dá zabránit převodem výsledku vzorce na text.

To je jistě pravda, ovšem sešit, kde jsou všechny vzorce převedeny na text (aby nemohla vzniknout chyba) se sice občas používá, ale obvykle se taková péče nesetká s velkým porozuměním.

Offline

Zápatí