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

#1 2. 12. 2016 22:13:39

libor007
Člen
Registrace: 11. 1. 2012
Příspěvků: 14

Pracovní kalendář - jak na výpočet - ranní/odpolední směny po týdnu

Zdarec,mám udělaný kalendář na celý rok. První sloupec je datum, ve druhém bych potřeboval dopočítat "R" nebo "O" pro náhled směn. Poradí někdo? Týdny se mi pravidelně střídají.

Offline

#2 3. 12. 2016 08:27:17

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

Re: Pracovní kalendář - jak na výpočet - ranní/odpolední směny po týdnu

Podívejte se sem - jsou tady vzory provozů - jasou tam svátky ap.
Pracovní kalendář 2017


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

#3 3. 12. 2016 16:27:43

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

Re: Pracovní kalendář - jak na výpočet - ranní/odpolední směny po týdnu

Nyní jsem si uvědomil, že dotaz zní jinak - "Jak na výpočet".
    Takže se omlouvám. Vzorec lze sestrojit takto :

=IF(MOD(INT(A3/7);2)=1;"R";"O")

    Má to ale problém. Když dáte do prvního řádku sloupce A datum 1.1.2017 dostanete posunutý týden. Posun je o dva dny - začíná sobotou a končí pátkem. proto se musí upravit start takto :

=IF(MOD(INT((A1+5)/7);2)=1;"R";"O")

    Pokud chcete  začínat odpoledními, musí se přehodit větvení podmínky takto :

=IF(MOD(INT((A1+5)/7);2)=1;"O";"R")

    Pokud byste potřeboval víkend nevyplňovat je možné to rozšířit například takto :

=IF(OR(B1="sobota";B1="neděle")=1;"";IF(MOD(INT((A1+5)/7);2)=1;"R";"O"))

    Víkend - prázdné buňky se řídí slovy "sobota" a "neděle" (podle výše uvedeného vzoru). Může to být i Modulo takto :

=IF(OR(MOD(A1;7)=1;MOD(A1;7)=0)=1;"";IF(MOD(INT((A1+5)/7);2)=1;"R";"O"))

    Samozřejmě vše se vztahuje na datum které je unikátním číslem, takže vzorec platí jen pro rok 2017. Mělo by to ale v dalším roce navazovat. Takže další rok 2018 musí následovat za 31.12.2017. Potom se správně naváže a můžete pokračovat.


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 4. 12. 2016 17:13:56

LADER
Člen
Registrace: 3. 4. 2013
Příspěvků: 144

Re: Pracovní kalendář - jak na výpočet - ranní/odpolední směny po týdnu

Zdravím,
zkuste si upravit tento rozpis: Směnový kalendář


Ubuntu 22.04.1 LTS, LibreOffice Verze: 7.4.6.2, wxMaxima 20.12.1, Maxima 5.47.0 (SBCL)

Offline

#5 4. 12. 2016 17:39:53

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

Re: Pracovní kalendář - jak na výpočet - ranní/odpolední směny po týdnu

Funkce WEEKNUM, WORKDAY, ODD, EVEN by měly problém (pokud nějaký je) řešit.

Offline

#6 4. 12. 2016 22:29:12

vikinx
Člen
Registrace: 24. 1. 2015
Příspěvků: 36

Re: Pracovní kalendář - jak na výpočet - ranní/odpolední směny po týdnu

Resim to obdobne, ale po mesicich. Kde do A1 zadavam cislo mesice, do B1 rok. Datum na cely mesic se vygeneruje (pokud je mesic kratsi nez 31 dnu, radky k temto dnum se skryji).

Datum generuji ve formatu "NNNND. MM. YYYY" (prip. "DD.MM. NN"), kde nazvy dnu jsou automaticke.


- smenost dopocitavam podle lichych a sudych tydnu
- vikendy podle poradi dnu v tydnu (6 a 7 je vikend)
- svatky podle vyhledavani v preddefinovane tabulce svatku
- stejnym zpusobeb i kdy ma byt zavreno
- vikendy a svatky pres podminene formatovani odliseno barevne


Tzn. ze vyuzivam stejne fce jako lp. ;-)

Offline

#7 5. 12. 2016 04:41:39

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

Re: Pracovní kalendář - jak na výpočet - ranní/odpolední směny po týdnu

To jste sice popsal dobře, ale je to celkem jedno. Vzorci je jedno jaký typ formátu datumu použijete. Je to jen košilka stejného čísla. Původní autor uvádí, že v prvním sloupci datum a ve druhém směna.


     Předpokládám že problémem je ten výpočet sudých a lichých týdnů. Vzorec který jsem dříve uvedl funguje tak jak si autor představuje - otestujte si to a uvidíte že je to jedno. Pro jistotu ještě posílám vzorec s proměnnými, které jsou pro někoho přijatelnější (čitelnější) nežli původní.


     Takže když si tento následující vzorec okopírujete bude to vracet R, nebo O podle podmínky :

=IF(OR(WEEKDAY(A1;2)=6;WEEKDAY(A1;2)=7)=1;"";IF(MOD(WEEKNUM(A1;1);2)=0;"O";"R"))

     Tento vzorec začíná odpoledními. Když byste chtěl začínat ráno změňte větvení, nebo výsledek funkce Modulo :
A -

=IF(OR(WEEKDAY(A1;2)=6;WEEKDAY(A1;2)=7)=1;"";IF(MOD(WEEKNUM(A1;1);2)=0;"R";"O"))

B -

=IF(OR(WEEKDAY(A1;2)=6;WEEKDAY(A1;2)=7)=1;"";IF(MOD(WEEKNUM(A1;1);2)=1;"O";"R"))

PS : Při stahování ze serveru "uložto.cz" je v pravé straně obrazovky nabídka cca 10-ti podobných záležitostí s kalendáři. není také problém vyhledat něco na netu.
     Proto si myslím, že autor nehledal ani tak kalendář jako právě řešení výpočtu - střídání týdnů lichý/sudý. Já jsem si to původně špatně vysvětlil a tak jsem postnul polotovar ze kterého se dají vytvářet různé směnové kalendáře. Debata se mou blbostí posunula někam jinam nežli chtěl autor - omluvám se:-(

Editoval neutr (5. 12. 2016 08:55:51)


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 5. 12. 2016 08:55:37

vikinx
Člen
Registrace: 24. 1. 2015
Příspěvků: 36

Re: Pracovní kalendář - jak na výpočet - ranní/odpolední směny po týdnu

Ano, mate pravdu... Je to jen format, datum bude porad stejne, ja se nepru. A vase podminky vyjdou stejne jako liche a sude, o tom zadna ;-)


Ja jsem to jen okomentoval, nic jineho v tom nebylo... ;-) :-)

Offline

#9 5. 12. 2016 08:58:12

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

Re: Pracovní kalendář - jak na výpočet - ranní/odpolední směny po týdnu

Ono jde o to, že problém kalendáře jsem postavil původně úplně jinak nežli zamýšlel autor a pak se k tomu přidali všichni ostatní se svým řešením. Byla to moje chyba.


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 5. 12. 2016 08:59:31

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

Re: Pracovní kalendář - jak na výpočet - ranní/odpolední směny po týdnu

vikinx napsal(a)

- vikendy podle poradi dnu v tydnu (6 a 7 je vikend)
- svatky podle vyhledavani v preddefinovane tabulce svatku

Pracovní den (v a1 je datum):

=workday(a1-1;1)=a1

(true = v a1 je pracovní den)

A včetně svátků (v a1 je datum):

=workday(a1-1;1;[svátky])=a1

Offline

#11 6. 12. 2016 10:09:09

libor007
Člen
Registrace: 11. 1. 2012
Příspěvků: 14

Re: Pracovní kalendář - jak na výpočet - ranní/odpolední směny po týdnu

Přátelé, kouknu na to hned, až budu mít trochu čas. Mám udělaný kalendář podle svých požadavků na celý rok, který se vleze do obalu prodávaného pracovního kalendáře - takový podlouhlý diář po měsících. Zadám jen rok a přepočítá se celý kalendář. Mám vychytanou dekádu 4+2, ale přešel jsem na 5+2. Proto mi šlo jen o ten výpočet "R" a "O". Víkendové pole může zůstat prázdné, popř by se ideálně šiklo "V", jako volno. Svátky a pod. neřeším. Děkuji za rady.

Editoval libor007 (6. 12. 2016 10:09:55)

Offline

#12 6. 12. 2016 17:54:53

LADER
Člen
Registrace: 3. 4. 2013
Příspěvků: 144

Re: Pracovní kalendář - jak na výpočet - ranní/odpolední směny po týdnu

Zdravím,
pro liché týdny ranní a sudé odpolední (v buňce A3 je datum):

=IF(WEEKDAY(A3;2)<6;IF(MOD(WEEKNUM(A3;2);2)=1;"R";"O");"---")

a toto je obráceně, sudé týdny ranní a liché odpolední:

=IF(WEEKDAY(A3;2)<6;IF(MOD(WEEKNUM(A3;2);2)=0;"R";"O");"---")

Ubuntu 22.04.1 LTS, LibreOffice Verze: 7.4.6.2, wxMaxima 20.12.1, Maxima 5.47.0 (SBCL)

Offline

#13 6. 12. 2016 23:18:49

libor007
Člen
Registrace: 11. 1. 2012
Příspěvků: 14

Re: Pracovní kalendář - jak na výpočet - ranní/odpolední směny po týdnu

Přátelé, tak plně funkční je #7 od neutr. Generuji si měsíční rozpis na daný rok+čtvrtletní náhled pro rok následující(pouze pro zjištění směny bez políček pro poznámky) Z nějakého důvodu #12 od ladera funguje správně pro daný rok, ale u čtvrtletního náhledu následujícího roku se mi obrátí směny.Předpokládám, že vzorec #7 bude bez problému funkční i pro další roky.
Děkuji za rady.

Offline

#14 7. 12. 2016 06:32:57

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

Re: Pracovní kalendář - jak na výpočet - ranní/odpolední směny po týdnu

Problém může být způsoben tím, že týdny v roce se na začátku roku restartují. Pak záleží jestli se konec roku strefí do víkendu.


     Například letos končí týden v sobotu. Neděle ještě patří teoreticky do téhož týdne, ale je to první týden roku 2017.
     Správně bez potíží chodí poslední vzorec z mého příspěvku #3. Ten nepočítá s ničím jiným nežli číslem datumu je to tento :

=IF(OR(MOD(A1;7)=1;MOD(A1;7)=0)=1;"";IF(MOD(INT((A1+5)/7);2)=1;"R";"O"))

     Uvedený vzorec z #7 chodí správně také, ale vím že s tím bývají někdy problémy v nastavení. Tohle neodhadl uživatel DERKA. On sice má kratší zápis jinak stejného vzorce, ale parametr pro start dnu v týdnu uvedl nesprávně ačkoliv na to mohl přijít až právě při přestupu let. Chyba je zde :
=IF(WEEKDAY(A3;2)<6;IF(MOD(WEEKNUM(A3;2);2)=0;"R";"O");"---")
     Start dne v týdnu je od dvojky. Já jsem uvedl od jedničky. Dvojka je poplatná tuším pro USA a možná Britské území nebo i kolonie. To je ale zkušenost. Už jsem na podobné "špeky" narazil, ale proto vím že je nejlepší se spolehnout na holé číslo (tedy datum) a ne na nějak předžvýkané funkce.


     Ne snad že bych datumovým funkcím nevěřil, ale čas od času se změní například nějaká norma či kód a původně správné výsledky se změní. Zde záleží například na národním nastavení. Takže když bude implicitní řeč nastavena na US bude chtít funkce WEEKNUM dvojku a chybně bude jednička.


     To znamená, že uživatel DERKA pokud má nastavenu angličtinu jako základní jazyk nemusel na tuto chybu vůbec narazit. Jemu to v takovém případě bude bude asi chodit dobře i při přechodu let. Ještě pro jistotu uvádím správný tvar LADERova vzorce :

=IF(WEEKDAY(A1;2)<6;IF(MOD(WEEKNUM(A1;1);2)=1;"R";"O");"---")

Editoval neutr (7. 12. 2016 06:35:13)


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

#15 7. 12. 2016 13:58:53

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

Re: Pracovní kalendář - jak na výpočet - ranní/odpolední směny po týdnu

Add parametry WEEKNUM.

Číslo týdne podle našeho kalendáře dává parametr 21. (LO >= 5.1). Pokud to má být nezávislé, tak raději funkce ISOWEEKNUM.

Jinak detaily jsou v nápovědě.

Offline

#16 7. 12. 2016 15:40:33

LADER
Člen
Registrace: 3. 4. 2013
Příspěvků: 144

Re: Pracovní kalendář - jak na výpočet - ranní/odpolední směny po týdnu

neutr napsal(a)

Ještě pro jistotu uvádím správný tvar LADERova vzorce :

=IF(WEEKDAY(A1;2)<6;IF(MOD(WEEKNUM(A1;1);2)=1;"R";"O");"---")

Díky za upozornění a za opravu.


Ubuntu 22.04.1 LTS, LibreOffice Verze: 7.4.6.2, wxMaxima 20.12.1, Maxima 5.47.0 (SBCL)

Offline

#17 7. 12. 2016 17:52:31

LADER
Člen
Registrace: 3. 4. 2013
Příspěvků: 144

Re: Pracovní kalendář - jak na výpočet - ranní/odpolední směny po týdnu

Ještě jsem zkusil projít některé další roky a to u všech třech uvedených variant:


ISOWEEKNUM(A3) - první týden je ten, kdy je 4.ledna
WEEKNUM(A1;1) - týden začíná nedělí
WEEKNUM(A1;2) - týden začíná pondělí


první počítá vždy správně, další dvě v rocích 2022, 2028 otočí směny.


Takže to vypadá, že nejsprávněji by mělo být:

=IF(WEEKDAY($A1;2)<6;IF(MOD(ISOWEEKNUM($A1);2)=1;"R";"O");"---")

Ubuntu 22.04.1 LTS, LibreOffice Verze: 7.4.6.2, wxMaxima 20.12.1, Maxima 5.47.0 (SBCL)

Offline

Zápatí