Založen: Nov 07, 2005 Příspěvky: 1520 Bydliště: Studénka
Zaslal: st leden 16 2019, 21:19 Předmět: Generátor kalendáře pro EXCEL
Pro plánování a sledování průběhu typových zkoušek železničních vozidel jsem si velmi dávno vytvořil "Generátor kalendáře" pro soubory *.xls a následně s novějším excelem pro *.xlsm.
Později jsem pro tento generátor našel mnoho jiných využití v různých svých doma používaných Excel aplikacích.
V příloze jsou dva soubory. Soubor "Generátor kalendáře.xls" pro Excel 2003 a starší (v Excel 2010 funguje tento soubor v režimu kompability). Soubor "Generátor kalendáře.xlsm" pro Excel 2010 a novější. Po stažení se změňte příponu "txt" na "xls nebo xlsm".Makra v souborech jsou někde schovaná ve vzorcích pro výpočet dne Velikonočního pondělí (už si nevzpomínám jak se tam dostala).
V přiložených souborech jsou kalendáře pro svislý (sloupcový) a vodorovný (řádkový) směr. Každý sloupec nebo řádek generuje tyto informace:
- Pořadové číslo týdne (uvedeno je vždy u pondělí).
- Datum ve tvaru dd.mm.rrrr.
- Skrytý sloupec nebo řádek se vzorci pro výpočet dne velikonočního pondělí.
- Den v týdnu (Po až Ne).
Pomoci podmíněných formátů se v kalendáři:
* Hnědě zvýrazňují soboty a neděle.
* Zeleně se zvýrazňují státní svátky (pokud je svátek o víkendu, zelená barva na datu nahradí standardní hnědou).
* Modře se zvýrazňuje velikonoční pondělí.
Jak generátor použít:
1.
Stačí zkopírovat jedinou čtveřici buněk A6 až D6 pro sloupec nebo G1 až G4 pro řádek (nebo kterýkoliv jiný sloupec nebo řádek např. A12 až D12 nebo M1 až M4) a čtveřici vložit na jiný list nebo nový sešit od libovolného sloupce nebo řádku.
2.
Vložený sloupec nebo řádek zkopírovat dolů u sloupců nebo doprava u řádků na počet, kolik dní chci mít zobrazených v kalendáři. Počet dní lze kdykoliv libovolně přidávat dalším přikopírováním.
3.
Počáteční datum kalendáře se napíše jako (Den-1) do sloupce data nad nebo zleva před kalendář jako je to v přiložených souborech. Také lze počáteční datum napsat přímo jako (Den) do prvního dne kalendáře.
4.
Nakonec se skryje (nebo zúží na minimalní šířku) sloupec se vzorci pro výpočet Velikonočního pondělí a upraví se šířky a výšky sloupců podobně jako je to přiložených "matičních souborech".
Samozřejmě lze také uložit "matiční soubor" pod jiným názvem a v něm pak mazáním a přidáváním sloupců a řádků si vytvořit formát kalendáře dle vlastní potřeby.
Nevím, zda předložený Generátor kalendáře může být pro někoho užitečný. Můžete to vzít jen jako zajímavost.
Možná znáte nějaké elegantnější řešení, které zde nahodíte jako konkurenci. Velmi komplikované jsou vzorce pro výpočet Velikonočního pondělí (namátkově jsem výsledky kontroloval porovnáním s daty na internetu někde od roku 1935 do roku 2080). Možná lze ty vzorce zjednodušit.
Zkrátka nechtěl jsem si toto staré dílko nechat jen pro sebe ve svém PC.
Založen: Nov 07, 2005 Příspěvky: 1520 Bydliště: Studénka
Zaslal: čt leden 17 2019, 13:52 Předmět:
Zjistil jsem, že přiložené TXT soubory asi nelze stáhnout jako soubor, ale přímo se mi otevírá ten TXT soubor smaozřejmě s nesmyslným excelovským obsahem ve znacích.
Dal jsem proto oba soubory na Uložto, odkud lze stáhnout oba soubory z tohoto odkazu:
Omlouvám se za svoji neznalost ukládání příloh do EB.
PS: Jak jsem dále ke svému překvapení zjitil, tak lze soubor ještě uložit pravým tlačítkem "Uložit soubor jako...". Pak se soubor uloží a po změně koncovky již lze soubor otevřít jako excel soubor. To jsou mi na moje stará kolena věci .
Založen: May 13, 2009 Příspěvky: 4958 Bydliště: BA-Petržalka :(
Zaslal: čt leden 17 2019, 15:43 Předmět:
Výpočet veľkej noci tam nieje, sú tam napevno výsledky (dátumy) z ktorých sa asi vyberá. Inak nič zložité vypočítať, podľa wiki by sa to dalo aj v jednej bunke excelu.
p.s. tie txt súbory hore, pokiaľ más solidný prehliadač (Opera 12), tak sa slušne spýta po kliknutí či otvoriť alebo uložiť. _________________ Silou vybrať peniaze od ľudí a následne za ne spraviť niečo proti ľuďom, s čím nesúhlasia, to je civilizácia?! Tento systém je chorý a vedie do záhuby.
Ideológie developerov niesu kompatibilné so šťastným životom.
Založen: Nov 07, 2005 Příspěvky: 1520 Bydliště: Studénka
Zaslal: čt leden 17 2019, 18:25 Předmět:
forbidden napsal(a):
Mám něco podobnýho, plánovací kalendář do roku 2136. Není to moje práce, někde jsem to našel. Můžeš porovnat ty vzorce.
Ten plánovací kalendář je dobrá pomůcka, ale je to jen zdroj informací. Nedá se ho implementovat do nějakého listu Excel pro vytváření vlastní aplikace, ve které je potřeba např. k jednotlivým dnům v kalendáři dotvářet nějaké informace. To jsem potřeboval právě pro řízení, plánování a sledování zkoušek vozidel.
Všechny státní svátky mají pevné datum, takže není problém den svátku jednoduchým vzorečkem v kalendáři zeleně zvýraznit. Abych zvýraznil modře také den velikonočního pondělí, musím pro každý den v kalendáři zjistit, zda uvedený den není datum velikonočního pondělí. Zvýraznit to pondělí byla jen taková nepodstatná třešnička na dortu a k práci s kalendářem to nebylo potřebné. Jen jsem si chtěl dokázat, že to dokážu naprogramovat do vzorce. K výpočtu jsem použil tzv. Gausovu metodu.
https://kalendar.beda.cz/gaussuv-algoritmus-vypoctu-velikonocni-nedele
Celý vzorec je vepsán do jediné buňky Excel. Pokud je daný den velikonoční pondělí, tak se v buňce zapíše jednička, jinak je tam prázdný znak. A podle té jedničky pak podmíněný formát zbarví datum na modro.
Vzorec vypadá takto:
=KDYŽ(B117=((22+MOD((19*MOD(ROK(B117);19)+24);30)+MOD((5+2*MOD(ROK(B117);4)+4*MOD(ROK(B117);7)+6*MOD((19*MOD(ROK(B117);19)+24);30));7))*A((22+MOD((19*MOD(ROK(B117);19)+24);30)+MOD((5+2*MOD(ROK(B117);4)+4*MOD(ROK(B117);7)+6*MOD((19*MOD(ROK(B117);19)+24);30));7))>0;(22+MOD((19*MOD(ROK(B117);19)+24);30)+MOD((5+2*MOD(ROK(B117);4)+4*MOD(ROK(B117);7)+6*MOD((19*MOD(ROK(B117);19)+24);30));7))<32)+(MOD((19*MOD(ROK(B117);19)+24);30)+MOD((5+2*MOD(ROK(B117);4)+4*MOD(ROK(B117);7)+6*MOD((19*MOD(ROK(B117);19)+24);30));7)-9)*(A((MOD((19*MOD(ROK(B117);19)+24);30)+MOD((5+2*MOD(ROK(B117);4)+4*MOD(ROK(B117);7)+6*MOD((19*MOD(ROK(B117);19)+24);30));7)-9)>0;(MOD((19*MOD(ROK(B117);19)+24);30)+MOD((5+2*MOD(ROK(B117);4)+4*MOD(ROK(B117);7)+6*MOD((19*MOD(ROK(B117);19)+24);30));7)-9)<31))-7*(P120>25)&"."&3+1*(A((MOD((19*MOD(ROK(B117);19)+24);30)+MOD((5+2*MOD(ROK(B117);4)+4*MOD(ROK(B117);7)+6*MOD((19*MOD(ROK(B117);19)+24);30));7)-9)>0;(MOD((19*MOD(ROK(B117);19)+24);30)+MOD((5+2*MOD(ROK(B117);4)+4*MOD(ROK(B117);7)+6*MOD((19*MOD(ROK(B117);19)+24);30));7)-9)<31))&"."&ROK(B117))+1;1;"")
Náhodně jsem zde jako příklad zkopíroval vzorec z buňky D117, který kontroluje, zda ve vedlejší buňce B117 není napsáno datum velikonočního pondělí. Takto napsaný vzorec se může kopírovat nahoru nebo dolů, a vždy se bude kontrolovat, zda vedle něj není to velikonoční pondělí.
Přiznám se, že s odstupem asi 20 let od sestavení toho výpočtu bych jej sám obtížně zpětně analyzoval. Vzorec je kompilát řady výpočtů v mnoha buňkách podle Gausova postupu do jediné buňky. Gausův postup vypočítává velikonoční neděli, proto k výsledku připočítávám nakonec +1 aby to bylo pondělí.
Ostatní výpočty v kalendáři jako je číslo týdne, den týdne (Po až Ne) a vzorce pro barvení víkendů a svátků jsou již proti výpočtu velikonoc velmi jednoduché.
Naposledy upravil Brozicek dne pá leden 18 2019, 7:55, celkově upraveno 1 krát.
LibreOffice má zabudovanou funkci EASTERSUNDAY pro výpočet Velikonoční neděle (pondělí následuje).
Jinak jde použít vzorec (rok je zadán v buňce A3), která vypočítá to samé (ověřeno v LibreOffice pro roky 1954 až 2199):
Založen: Nov 07, 2005 Příspěvky: 1520 Bydliště: Studénka
Zaslal: pá leden 18 2019, 7:22 Předmět:
Srovnal jsem si data velikonoc do roku 2136 podle "Plánovacího kalendáře" Forbiddena s výpočtem dle mého "Generátoru kalendáře". Výsledek je v přiloženém listu Excel (*.rar). Data velikonoc z tabulky Forbiddena jsem upravil na velikonoční pondělky a tato data jsem zkopíroval do mého generátoru.
- Všechna data v tabulce dle Forbiddena jsou skutečně pondělky.
- Do roku 2099 se Velikonoce shodují s mým vzorcem s výjimkou dnů 19.4.2049, 20.4.2076 a 20.4.2093. Tato data můj kalendář jako velikonoce neoznačil.
- Trvale se od tabulky dle Forbiddena lišíme od roku 2099.
Pravdou je, že můj vzorec, pokud si vzpomínám, by měl být platný jen do roku 2099. Ty tři dny do roku 2099, v kterých se lišíme, bude asi někde chyba v mých korekcích. Zkusím si najít někdy výpočet do roku 2099 z jiného zdroje a ještě jednou to porovnat. Teoreticky může být chyba i v tabulce od Forbiddena .
Bez ohledu na ten rozdíl v datu velikonoc je můj Generátor kalendáře originální v tom, že veškeré informace k tvorbě kalendáře jsou uložené do 4 nezávislých, vedle sebe uložených buněk. Jejich kopírováním a zadáním počátečního data lze vytvořit nejrůznější výstupní formy.
- Nechcete v kalendáři týden - jen vymažte sloupec týdne.
- Nechcete zvýraznit velikonoční pondělí - vymažte sloupec se vzorci pro výpočet velikonoc.
- Nechcete psát dny v týdnu Po až Ne - vymažte sloupec se dny.
- Základem je pak jediný sloupec s daty a barevným zvýrazněním víkendů a svátků. Pokud v tom sloupci nepotřebujete rok, jen změňte formát buněk na dd.mm.
Vyjmenované funkce jsou správné pro libovolný rok. _________________ Ubuntu 22.04.4 LTS, LibreOffice Verze: 7.6.6.3, wxMaxima 20.12.1, Maxima 5.47.0 (SBCL)
Založen: Nov 07, 2005 Příspěvky: 1520 Bydliště: Studénka
Zaslal: so leden 19 2019, 10:51 Předmět:
Trošku jsem si pohrál s těmi daty velikonoc, které zde lze vyčíst, a porovnal jsem je mezi sebou (porovnával jsem pomocí funkcí Excel, vizuelně bych to srovnával "rok"). Je zde 5 zůsobů jak najít data velikonoc:
1.
Vzorec Brozicek (velmi dlouhý).
2.
Vzorec LADER (elegantně krátký)
=IF(B3=1+(ROUND(DATE(YEAR(B3);4;1)/7+MOD(19*MOD(YEAR(B3);19)-7;30)*0,14;0)*7-6);1;0)
a po převedení do tvaru pro Excel Microsoft
=KDYŽ(B3=1+(ZAOKROUHLIT(DATUM(ROK(B3);4;1)/7+MOD(19*MOD(ROK(B3);19)-7;30)*0,14;0)*7-6);1;"")
Buňku B3 je samozřejmě nutno upravit na buňku, kde je kontrolované datum velikonoc.
3.
Tabulka s daty velikonoc do roku 2136 v "Plánovacím kalendáři" dle Forbiddena.
4.
Data velikonoc v "Pracovním kalendáři" od kolegy Hafca do roku 2055 (pokud se Rok místo výběrem posuvníku napíše do pole pro rok, funguje to ještě i pro rok 2099.
5. Ještě jsem našel kalendář "Beda" s velikonoci do roku 2099
https://kalendar.beda.cz/kalendarni-data-velikonocni-nedele
Pomocí funkcí Excel lze srovnávat jedině možnosti 1, 2 a 3. Tam byly nalezeny rozdíly jen pro roky 2049, 2076 a 2093.
- Kalendář Brozicek a Forbiden se shodují jen do roku 2099 a mimo roky 2049, 2076 a 2093.
- Kalendář LADER a Forbiden se shodují až do roku 2136 mimo rok 2093.
Pro kalendáře 4 a 5 jsem se proto zaměřil na srovnání jen na tyto tři roky.
Celkové výsledky srovnání jsou zde:
.........................2049......................2076.........................2093
Brozicek:_______26.4.____________27.4.______________13.4.
LADER: ________19.4._____________20.4.______________13.4.
Forbiden:_______19.4._____________20.4.______________20.4.
Hafca: _________19.4._____________20.4.______________13.4.
Beda:__________19.4._____________20.4.______________13.4.
Pokud můžeme věřit tomu, že tam, kde je více shodných datumů velikonoc, je výsledek pravdivý, tak ze srovnání vyplývá, že vzorec Brozicek má chybu pro roky 2049 a 2076, tabulka dle Forbiddena má chybu v roce 2093. Platná data by mohla být 19.4.2049, 20.4.2076 a 13.4.2093.
Prosím kolegy, kteří se toho dožijí, aby to pak zkontrolovali .
Pro mne je významný jednoduchý vzorec kolegy LADER, kterým u sebe v Generátoru kalendáře nahradím můj 20 roků starý nepřehledně dlouhý vzorec.
Dodatok: ak je dátum Veľkej noci neskôr ako 25. apríla, tak sa posúva o týždeň skôr.
_________________ Silou vybrať peniaze od ľudí a následne za ne spraviť niečo proti ľuďom, s čím nesúhlasia, to je civilizácia?! Tento systém je chorý a vedie do záhuby.
Ideológie developerov niesu kompatibilné so šťastným životom.
Pro ověření správnosti data, lze použít tento odkaz.
Je tam i program, který by měl fungovat jako funkce s touto úpravou (výsledek vrací do buňky ve formátu datum):
kód:
Function EasterDate(y)
' EASTER DATE CALCULATION FOR YEARS 1583 TO 4099
' y is a 4 digit year 1583 to 4099
' d returns the day of the month of Easter
' m returns the month of Easter
' Easter Sunday is the Sunday following the Paschal Full Moon
' (PFM) date for the year
' This algorithm is an arithmetic interpretation of the 3 step
' Easter Dating Method developed by Ron Mallen 1985, as a vast
' improvement on the method described in the Common Prayer Book
' Because this algorithm is a direct translation of the
' official tables, it can be easily proved to be 100% correct
' This algorithm derives values by sequential inter-dependent
' calculations, so ... DO NOT MODIFY THE ORDER OF CALCULATIONS!
' The \ operator may be unfamiliar - it means integer division
' for example, 30 \ 7 = 4 (the remainder is ignored)
' All variables are integer data types
' It's free! Please do not modify code or comments!
' ==========================================================
Dim FirstDig, Remain19, temp 'intermediate results
Dim tA, tB, tC, tD, tE 'table A to E results
FirstDig = y \ 100 'first 2 digits of year
Remain19 = y Mod 19 'remainder of year / 19
Select Case FirstDig
Case 21, 24, 25, 27 To 32, 34, 35, 38
temp = temp - 1
Case 33, 36, 37, 39, 40
temp = temp - 2
End Select
temp = temp Mod 30
tA = temp + 21
If temp = 29 Then tA = tA - 1
If (temp = 28 And Remain19 > 10) Then tA = tA - 1
'find the next Sunday
tB = (tA - 19) Mod 7
tC = (40 - FirstDig) Mod 4
If tC = 3 Then tC = tC + 1
If tC > 1 Then tC = tC + 1
temp = y Mod 100
tD = (temp + temp \ 4) Mod 7
tE = ((20 - tB - tC - tD) Mod 7) + 1
d = tA + tE
'return the date
If d > 31 Then
d = d - 31
m = 4
Else
m = 3
End If
If y<1900 Then ' Pro počítače, které neumí pracovat s roky před 1900
EasterDate = Cstr(d)&"."&CStr(m)&"."&CStr(y)
Else
EasterDate = DateSerial(y, m, d)
EndIf
End function
... ale nezkoušel jsem (doufám, že jsem neudělal chybu) _________________ Ubuntu 22.04.4 LTS, LibreOffice Verze: 7.6.6.3, wxMaxima 20.12.1, Maxima 5.47.0 (SBCL)
Založen: Nov 07, 2005 Příspěvky: 1520 Bydliště: Studénka
Zaslal: ne leden 20 2019, 8:21 Předmět:
LADER napsal(a):
Pro ověření správnosti data, lze použít tento odkaz...........................
Je neuvěřitelné, co všechno se dá na internetu najít, třeba data velikonoc podle uvedeného odkazu.
Mnoho věcí je na internetu užitečných, ale také je tam myslím mnoho zbytečného balastu.
Nějak by mělo být povinné, aby každá informace na internetu obsahovala datum vzniku, platnosti nebo zařazení na internet. Informace bez data vzniku mohou být zavádějící pro svoji neaktuálnost.
Nemůžete odesílat nové téma do tohoto fóra. Nemůžete odpovídat na témata v tomto fóru. Nemůžete upravovat své příspěvky v tomto fóru. Nemůžete mazat své příspěvky v tomto fóru. Nemůžete hlasovat v tomto fóru. Nemůžete připojovat soubory k příspěvkům Můžete stahovat a prohlížet přiložené soubory
Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.