< návrat zpět

MS Excel


Téma: počítání kalendářní týdnů mezi daty rss

Zaslal/a 12.7.2020 12:24

Hoj Všem excel masterům,

mám dotaz ohledně počítání jednotlivých kalendářních týdnů.

plánuju určitý proces který potřebuji trackovat a vytvoril jsem si pro něj tabulku (viz příloha).
Proces začíná v roce 2020 KT35 a konci v roce 2021 KT03.
Vzorec který na to mám napsaný viz příloha tak funguje skvěle a dělá co má až do doby přestupného roku. když přijde přelom roku tak to přestává počítat správě, jako příklad bunky AI7 kde to ukazuje KT O1/21 coz je sice dobře ale datum v bunce AH10 to ukazuje 01.01.2021 co je pátek KT53/20 a ne KT01/21. problém potom navstává i dál kdy se nepřičítají správně delty a zobrazuje mi to vždycky o 1 kalendářní týden než je požadováno.

Vyzkoušel jsem všechny varianty týdnů jako 1,2,11,12,14,15,16,21 apod ale nic mi z toho nefungovalo a nevím proč mi ten prodloužený rok dělá takový bordel.

Dokázal by mi s tím někdo prosím poradit, aby mi to počítalo správně?

Děkuji moc

Příloha: xlsx47255_priklad_1_pocitani_mezi_daty.xlsx (29kB, staženo 57x)
Zaslat odpověď >

Strana:  1 2   další »
#047256
Stalker
zkus nahradit fci WEEKNUM za ISOWEEKNUMcitovat
#047259
avatar
s isoweeknum tak jak to mam napsaný tak to nefunguje vubeccitovat
#047260
avatar
Pozoruhodné 9
=IF(C7="SSC";IF(AB7="Y";IF(WEEKNUM(AD7+(6*7);21)<10;CONCATENATE(0;"";CONCATENATE(WEEKNUM(AD7+(6*7);21);"/";RIGHT(YEAR(AD7+(6*7));2)));CONCATENATE(WEEKNUM(AD7+(6*7);21);"/";RIGHT(YEAR(AD7+(6*7));2)));IF($F$3>DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1));IF(WEEKNUM(DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1))+(6*7)+($F$3-(DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1))));21)<10;CONCATENATE(CONCATENATE(0;"";WEEKNUM(DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1))+(6*7)+($F$3-(DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1))));21));"/";RIGHT(YEAR(DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1))+(6*7)+($F$3-(DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1)))));2));CONCATENATE(WEEKNUM(DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1))+(6*7)+($F$3-(DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1))));21);"/";RIGHT(YEAR(DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1))+(6*7)+($F$3-(DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1)))));2)));IF(WEEKNUM(DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1))+(6*7);21)<10;CONCATENATE(0;"";CONCATENATE(WEEKNUM(DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1))+(6*7);21));"/";RIGHT(YEAR(DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1))+(6*7));2));CONCATENATE(WEEKNUM(DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1))+(6*7);21);"/";RIGHT(YEAR(DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1))+(6*7));2)))));IF(AB7="Y";IF(WEEKNUM(AD7+(3*7);21)<10;CONCATENATE(0;"";CONCATENATE(WEEKNUM(AD7+(3*7);21);"/";RIGHT(YEAR(AD7+(3*7));2)));CONCATENATE(WEEKNUM(AD7+(3*7);21);"/";RIGHT(YEAR(AD7+(3*7));2)));IF($F$3>DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1));IF(WEEKNUM(DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1))+(3*7)+($F$3-(DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1))));21)<10;CONCATENATE(CONCATENATE(0;"";WEEKNUM(DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1))+(3*7)+($F$3-(DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1))));21));"/";RIGHT(YEAR(DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1))+(3*7)+($F$3-(DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1)))));2));CONCATENATE(WEEKNUM(DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1))+(3*7)+($F$3-(DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1))));21);"/";RIGHT(YEAR(DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1))+(3*7)+($F$3-(DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1)))));2)));IF(WEEKNUM(DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1))+(3*7);21)<10;CONCATENATE(0;"";CONCATENATE(WEEKNUM(DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1))+(3*7);21));"/";RIGHT(YEAR(DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1))+(3*7));2));CONCATENATE(WEEKNUM(DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1))+(3*7);21);"/";RIGHT(YEAR(DATE(RIGHT(AE7;2)+2000;1;LEFT(AE7;2)*7)-WEEKDAY(DATE(RIGHT(AE7;2)+2000;1;1))+(3*7));2))))))citovat
#047261
avatar
Marjankaj - vypadá docela složitě, ale ono se to hodne opakuje je tam nekolikrat když to to clověk rozlozi, tak to vypadá podstatně přijetelněji :)citovat
#047262
Lugr
Trochu se v tom ztrácím a nechápu co potřebujete. 4citovat
#047264
avatar
Lugr - problem s prestupovým rokem. letos je 53 KT a díky tomu mi to dělá bordel a počítáto o jeden týden mín než bych chtěl. protože když se podíváte na bunky AI7 kde je KT01/21 a v bunce AM7 tak by mělo být KT O3/21 a ne KT02/21, ale to se právě nezobrazuje protoze problem vznika u tohoto prechodneho roku bo KT01/21 když prevedu na datum tak mi to ukazuje 01.01.2021 coz je spatne protoe to je KT53D5, tzn chybí tam jeden týden a já nevím proč když až do KT 53/20 to počítá správně.

Je to takhle srozumitelnější, nebo je potřeba to ještě blíže specifikovat?

Díky

Tcitovat
#047265
Lugr
Střílím hodně od boku a vůbec se ve vaší tabulce nevyznám, ale zkuste:
1. zakomponovat WEEKNUM(AW7+1;21)
2. doporučuji formátovat KT 00/00 a né 0/00
3. na výpočet datumu doporučuji vzorec

7*ZAOKROUHLIT((7&1-ZPRAVA(AG7;2))/7+ZLEVA(AG7;2);0)+177

snad to pomůžecitovat
#047266
avatar
No raz píšeš "prestupný rok" a potom zase "prestupový rok". Je to to isté? A čo to vlastne znamená?
A čo je "delta"?
A hlavne čo má byť výsledok?citovat
#047267
Lugr
Přijde mi, že zbytečně pořád přepočítáváte dny na KT a zase na zpět. V tom se snadno udělá chyba. Pokud jde o nějakých 12 týdnů šlo by to i jednodušeji.citovat
#047268
avatar
Základní problém je v počítání týdnů
(53/20 a 1/21 = jeden týden;
nebo lépe: poslední týden v roce nekončící nedělí a první týden v novém roce je jeden týden).
Proto bylo doporučeno použít ISOWEEKNUM

GOOGLE:
definuje norma ISO 8601. Pro první týden v roce je důležité, kterým dnem týdne daný rok začíná. Pokud začíná ve čtvrtek či dříve, jde o první týden v roce. První týden v roce tedy obsahuje minimálně jeden pracovní den. Pokud však rok začíná až v pátek či později, první týden v roce začíná až následující pondělí. V tom případě první dny nového roku patří ještě do posledního týdne minulého roku
Zdroj (12. 7. 2020): https://kalendar.beda.cz/cislo-tydnecitovat

Strana:  1 2   další »

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje