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

#1 3. 3. 2011 19:07:31

-mcz-
Člen
Registrace: 3. 3. 2011
Příspěvků: 8

Ukotvení data a času - zafixování výsledku fce NOW()

Potřeboval bych do tabulky -sběr dat- zanést kromě sledované hodnoty (sloupec A1..Ax)- zadává se ručně - i parametr "aktuální datum a čas zápisu" (sloupec B1..Bx). Vlastně B1..Bx se automaticky doplní. V podstatě je to snad realizovatelné pomocí funkce NOW() - formát mě vyhovuje. Jenže je to proměnná a při každém příštím vstupu do tabulky se "aktuální čas zápisu" přepíše opět výsledkem "aktuální systémový čas" na všech použitých pozicích. Pokud funkci NOW() event. TODAY() použiji v podmínce, nefunguje to, stále se to přepisuje aktuálním systémovým časem. Zkoušel jsem funkci zavřít do makra ale tam to také nefunguje. Pří příštím načtení tabulky se opět vše přepočítá a tím degraduje na stejnou hodnotu na všech pozicích, kde je to použito. V Excelu to funguje - makro se spustí jen jednou a hotovo. Uložím tabulku, načtu tabulku, stále tam jsou ty minulé, jednou vypočítané jedinečné výsledky (datum,čas). Ale v OO se při každém příštím načtení tabulky opět vše přepočítá a "zaktualizuje" - čímž pro mě, znehodnotí. V podstatě bych potřeboval aby fukce NOW() fungovala jako STAMP (razítko). Zadám ručně hodnotu do A1 a do B1 se otiskne výsledek fce NOW() a nemění se, dokud např. nezměním hodnotu v A1. Do příští změny A1 je B1 (datum,čas) konstantní. Obdobně vztah A2 - B2 atd. Asi to neumím jednodušeji vysvětlit bez příkladu. Omlouvám se a díky za ev. nasměrování.

Offline

#2 3. 3. 2011 19:29:46

hanus
Člen
Místo Olomouc
Registrace: 29. 11. 2006
Příspěvků: 573
Web

Re: Ukotvení data a času - zafixování výsledku fce NOW()

Jednoduché řešení: do B1 vložte vzorec
=IF(A1="";NOW();B1)
a rozkopírujte ho dolů
Nevýhoda: pokud se v tabulce dlouho nic nezmění a vy pak rovnou vložíte něco do sl.A, pak tam už zůstane starší čas (zkuste při zobrazení času i s vteřinami)


Co to znamená "zavřít funkci do makra"?

Editoval hanus (3. 3. 2011 19:31:17)

Offline

#3 3. 3. 2011 22:19:08

j-pastierik
Člen
Registrace: 15. 11. 2004
Příspěvků: 761

Re: Ukotvení data a času - zafixování výsledku fce NOW()

Viď rozšírenie pre vkladanie dátumu a času

Offline

#4 4. 3. 2011 09:04:36

-mcz-
Člen
Registrace: 3. 3. 2011
Příspěvků: 8

Re: Ukotvení data a času - zafixování výsledku fce NOW()

hanus napsal(a)

Jednoduché řešení: do B1 vložte vzorec
=IF(A1="";NOW();B1)
a rozkopírujte ho dolů
Nevýhoda: pokud se v tabulce dlouho nic nezmění a vy pak rovnou vložíte něco do sl.A, pak tam už zůstane starší čas (zkuste při zobrazení času i s vteřinami)


Co to znamená "zavřít funkci do makra"?


Function FixDate()
    FixDate =NOW()
End Function

V Excelu tohle funguje přesně jak potřebuji. V OO se makro opakovaně přepočítává při každém novém načtení tabulky - třeba druhý den. V Excelu tabulka vypadá po opětovném načtení "druhý den" přesně tak jak jsem ji předtím zavřel.

Offline

#5 4. 3. 2011 09:32:05

-mcz-
Člen
Registrace: 3. 3. 2011
Příspěvků: 8

Re: Ukotvení data a času - zafixování výsledku fce NOW()

j-pastierik napsal(a)

Viď rozšírenie pre vkladanie dátumu a času

Díky za tip. Testuji...

Offline

#6 4. 3. 2011 11:19:51

-mcz-
Člen
Registrace: 3. 3. 2011
Příspěvků: 8

Re: Ukotvení data a času - zafixování výsledku fce NOW()

hanus napsal(a)

Jednoduché řešení: do B1 vložte vzorec
=IF(A1="";NOW();B1)
a rozkopírujte ho dolů
Nevýhoda: pokud se v tabulce dlouho nic nezmění a vy pak rovnou vložíte něco do sl.A, pak tam už zůstane starší čas (zkuste při zobrazení času i s vteřinami)

Co to znamená "zavřít funkci do makra"?

Update odpovědi:

Tak tohle moc nefunguje. Je to krok správným směrem, problém byl pochopen ale vyhazuje to Chyba:522 cyklický odkaz, logicky. Po zapnutí iterace vejde v platnost poznámka na konci vašeho příspěvku. No, není to ono. Tudy cesta asi nevede. Výhodou je, že se to dá použít jako vzorec do buňky.

Offline

#7 4. 3. 2011 11:30:39

-mcz-
Člen
Registrace: 3. 3. 2011
Příspěvků: 8

Re: Ukotvení data a času - zafixování výsledku fce NOW()

j-pastierik napsal(a)

Viď rozšírenie pre vkladanie dátumu a času

Update odpovědi:

Tohle je dobré řešení. Ještě kdyby to šlo rozšířit o možnost vložit do buňky, třeba do podmínky, jako uživatelem definovaná funkce aby se pokaždé nemuselo klikat na volbu na liště, bylo by to přesně ono. Jinak je lišta super. Od tohoto okamžiku bez vašeho doplňku pro mě nebude OO kompletní. :-) Díky.

Offline

#8 4. 3. 2011 12:19:25

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

Re: Ukotvení data a času - zafixování výsledku fce NOW()

"Ruční" vkládání je asi jasné.

Automatické vkládání:

Vzorec by měl vypadat nějak takto:

=IF(A1=""; ""; IF(B1="";NOW();B1))

a zapnout cyklické odkazy.

Pokud požadujete automatické vkládání času bez cylických odkazů, napište si funkci, která prohledá sloupec A a v řádcích, kde A = "" doplní "", kde A <> "" a B = " doplní datum a napojte ji na změnu sešitu.

ps. Pokud v Excelu opravdu používáte funkci, co jste uvedl, tak jednoho dne budete asi nepříjemně překvapen. (Ve skutečnosti nic nefixuje a při úplném přepočtu listu vrátí aktuální datum.)

Offline

#9 4. 3. 2011 14:26:39

-mcz-
Člen
Registrace: 3. 3. 2011
Příspěvků: 8

Re: Ukotvení data a času - zafixování výsledku fce NOW()

lp. napsal(a)

"Ruční" vkládání je asi jasné.

Automatické vkládání:

Vzorec by měl vypadat nějak takto:

=IF(A1=""; ""; IF(B1="";NOW();B1))

a zapnout cyklické odkazy.

Pokud požadujete automatické vkládání času bez cylických odkazů, napište si funkci, která prohledá sloupec A a v řádcích, kde A = "" doplní "", kde A <> "" a B = " doplní datum a napojte ji na změnu sešitu.

ps. Pokud v Excelu opravdu používáte funkci, co jste uvedl, tak jednoho dne budete asi nepříjemně překvapen. (Ve skutečnosti nic nefixuje a při úplném přepočtu listu vrátí aktuální datum.)

Ano, to je mi jasné. Až dojde k refreši maker, přepočítat tabulku nebo tak nějak. Já Excel používám sekundárně a jen někde (kde je a není tam OO). Proto hledám řešení tady. Vyzkouším, díky.

Offline

#10 5. 3. 2011 08:15:07

j-pastierik
Člen
Registrace: 15. 11. 2004
Příspěvků: 761

Re: Ukotvení data a času - zafixování výsledku fce NOW()

Napríklad takéto makro to rieši ako funkciu:

function Vloz_Datum()
 dim dokument, bunka as object
 dim sTeraz$ : sTeraz=now ' Aktuálny dátum a čas vo formáte "dd.mm.rrrr hh:mm:ss"
 dim sDatum$
 i=instr(sTeraz," ") ' Pozícia, kde je oddelený dátum a čas
 sDatum=left(sTeraz,i-1) ' Dátum
 
 if ThisComponent.supportsService("com.sun.star.sheet.SpreadsheetDocument") then ' Ak sme v tabuľkovom procesore
  Dokument=ThisComponent.getCurrentSelection() ' Aktuálny výber
  bunka=dokument.getCellByPosition(0,0) ' Aktuálna bunka
  if bunka.value=0 then ' Ešte nie je zadaný dátum
   Vloz_Datum=datevalue(sDatum) ' Nový dátum ako hodnoty
  else ' Už je zadaný dátum - nemeníme ho
   Vloz_Datum=bunka.value ' Starý dátum
  endif
 endif
end function

stačí ak namiesto =now() zapíšete =Vloz_Datum() (názov si zmeňte podľa predstáv)

Offline

#11 5. 3. 2011 08:18:43

j-pastierik
Člen
Registrace: 15. 11. 2004
Příspěvků: 761

Re: Ukotvení data a času - zafixování výsledku fce NOW()

Pridám do novej verzie rozšírenia pre vkladanie dátum a času aj funkcie (ako pre dátum, tak aj pre čas), ďakujem za inšpiráciu.

Offline

#12 5. 3. 2011 14:30:03

-mcz-
Člen
Registrace: 3. 3. 2011
Příspěvků: 8

Re: Ukotvení data a času - zafixování výsledku fce NOW()

Díky všem. Skvělý team a perfektní "týmovka".

Offline

#13 18. 3. 2011 00:02:29

Schinagl
Člen
Registrace: 14. 2. 2007
Příspěvků: 36

Re: Ukotvení data a času - zafixování výsledku fce NOW()

Vkládání datumu a času se nechá řešit pomocí funkce NOW() a kontroly vztupních dat. Do buňky C1 se dá vzorec =NOW() a formát datumu s česem a do buněk B1:Bx se vloží kontrola vstupních dat/rozsah buněk $C$1.
Čas je pevně zapsaný a kliknutí se nechá aktualizovat.

Offline

Zápatí