< návrat zpět

MS Excel


Téma: Walkenbachův věčný kalendář rss

Zaslal/a 31.5.2018 0:30

Při hledání rozsáhlých maticových vzorců jsem narazil na velmi elegantní využití takového vzorce pro věčný měsíční kalendář. Nedalo mi a s malým grafickým vylepšením dávám tuto krásnou ukázku síly maticových vzorců do přílohy.

Příloha: xlsx40511_vecnykalendarjw.xlsx (12kB, staženo 261x)
Zaslat odpověď >

Strana:  1 2 3 4   další »
#040512
MePExG
Je to pekná práca, ale nezafunguje správne pre 1.5.1966. Asi pre všetky mesiace, ktoré začínajú 1. v nedeľu.citovat
#040513
avatar
Vynikající postřeh! Nenapadlo mne zkoumat funkčnost vzorce, převzatého z knižního zdroje. V daném případě nejde přímo o Walkenbachův originál, kde týden začíná nedělí, ale o přídavek od českého překladatele knihy s týdnem od pondělí do neděle, jak je u nás zvykem.
Na druhé straně i chyba může být užitečná. Zkuste maticový vzorec upravit tak, aby ho zmíněná chyba "neděle prvního" přestala trápit! To není výzva jen pro mepexg, ale pro všechny, kteří na to mají!citovat
#040514
avatar
Už to mám! Nebudu ale kazit radost z hledání ostatním. Pokud ale do zítřka nikdo nezveřejní opravený kalendář, pak tu svoji opravu předvedu.citovat
#040515
avatar
To není výzva. Vzorec je poměrně přímočarý a jednoduchý.

Funkčnost vzorců na internetu, které se týkají práce s kalendářem je vždy dobré ověřit. Zejména, když implicitní hodnoty u nás dávají chyby.citovat
icon #040523
eLCHa
Dnes už mi to přijde zbytečné pomocí maticových vzorců.
Do 1. buňky dám vzorec=DATUM(ROK(B3);MĚSÍC(B3);1)-(DENTÝDNE(DATUM(ROK(B3);MĚSÍC(B3);1);2)-1)Do ostatních +1 k předchozímu dni.
Různý měsíc skryju podmíněným formátováním.citovat
#040524
avatar
pro Luba: vzorec není z internetu, ale z tištěné knihy od Walkenbacha (resp. z přiloženého CD). Když to bylo tak jednoduché, proč jste ten vzorec neopravil?

pro elCHa: nabídnuté řešení funguje, zejména proto, že v použitém vzorci nechybí u funkce DENTYDNE druhý argument pro určení týdne Po-Ne. To bylo podstatou chyby "neděle prvního", kterou objevil mepexg.

pro oba: nesnažím se ohromovat znalce. Hledám metody, které usnadňují život těm, kteří toho umějí mnohem méně, než vy dva.

pro všechny: v příloze je sešit s opraveným kalendářem
Příloha: xlsx40524_vecnykalendarjw1.xlsx (12kB, staženo 91x)
citovat
#040525
avatar

Vovka napsal/a:

pro Luba: vzorec není z internetu, ale z tištěné knihy od Walkenbacha (resp. z přiloženého CD). Když to bylo tak jednoduché, proč jste ten vzorec neopravil?


Nechtěl jsem kazit radost z objevování.

Je to jednoduché: Spočtu, který den je pondělí prvního týdne a přičtu matici 6x7 pro jednotlivé dny. Podmínka není nezbytná. Lze ji snadno nahradit podmíněným formátováním.

"Složitost" maticových vzorců je podle mne způsobena potřebou přepnout myšlení.

=KDYŽ(MĚSÍC(DATUM(ROK(B3);MĚSÍC(B3);1))<>MĚSÍC(DATUM(ROK(B3);MĚSÍC(B3);1)-DENTÝDNE(DATUM(ROK(B3);MĚSÍC(B3);1);2)+{0;1;2;3;4;5}*7+{1\2\3\4\5\6\7});"";DATUM(ROK(B3);MĚSÍC(B3);1)-DENTÝDNE(DATUM(ROK(B3);MĚSÍC(B3);1);2)+{0;1;2;3;4;5}*7+{1\2\3\4\5\6\7})

Po částech:

Dny - maticově do 6 x 7 buněk
={0;1;2;3;4;5}*7+{1\2\3\4\5\6\7}

Pondělní datum - 1 protože kalendář nemá nulu a dny počítáme od jedné (a vzoreček je o trochu kratší).

=DATUM(ROK(B3);MĚSÍC(B3);1)-DENTÝDNE(DATUM(ROK(B3);MĚSÍC(B3);1);2)

atd.citovat
#040526
avatar
pro Luba: za dvacet let hrátek s Excelem jsem v žádné své aplikaci nepoužil ani jeden maticový vzorec. Původem jsem programátor, a kde obyčejné vzorce nestačily, ve 100% případů stačil VBA (někdy jako UDF). Jediný případ, kde ve vzorcích listu používám pole, je SOUČIN.SKALÁRNÍ. A ten mám rád zejména proto, že ho není nutné vkládat do maticového vzorce.
Teď si s maticovými vzorci hraju jen proto, abych je dokázal správně formátovat. Zjišťuji přitom, že mám ještě pár věcí, které musím dotáhnout. Můj obdiv k Walkenbachovu kalendáři vzbudilo právě to, že se mi konečně maticový vzorec odměnil hezkým výsledkem. Řešení od elCHa bez maticového vzorce je ale rovnocenné, takže můj potlesk jeho maticovému řešení lehce utichá.citovat
icon #040527
avatar
@vovka
pokial lubo napise, ze je to jednoduche, tak by som osobne vzal v potaz, ze lubo vie naozaj mnoho a neskusal by som ho challengovat, pretoze na 100% neplaca do vetra a riesenie pozna.
ad "Jediný případ, kde ve vzorcích listu používám pole, je SOUČIN.SKALÁRNÍ. A ten mám rád zejména proto, že ho není nutné vkládat do maticového vzorce." Nie je vzdy pravdou, dost casto pouzivam skalarny sucin s vnorenou funkciou If a tam si bez potvrdenia CSE namiesto Enter nevystacim.citovat
#040528
avatar
Vlákno bych rád uzavřel díkem místní elitě, která se diskuze zúčastnila. Překvapivě jednoduché řešení od elCHa dokládám v příloze pro porovnání s řešením od Johna Walkenbacha.
V žádném případě nezpochybňuji slova diskutujících ani nezkouším exhibovat. Jen se snažím poradit těm, kteří toho vědí ještě míň než já.
Příloha: xlsx40528_vecnykalendar.xlsx (14kB, staženo 94x)
citovat

Strana:  1 2 3 4   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