Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  20 21 22 23 24 25 26 27 28   další » ... 37

Uvedený kaledář je opravdu pěkná ukázka maticového vzore, i když fakticky jen kopíruje řešení běžnými vzorečky.
Ovšem tvrzení, že "normální" vzorce a vba stačí na 100% je sice pravdivé, ale v řadě případů hodně neefektivní.
Například regresní analýza (pomíjím zmatek ve výběru funkcí). Funkce LINREGRESE je maticová a vrací matici výsledků. To neobejdete skalárním součinem a psát to ve vba je možné, ale málo efektivní. Mimochodem, maticový vzorec obalený skalárním součinem je stále maticovým vzorcem, jen je menší riziko, že ho někdo špatně uloží.
Další uplatnění jsou různé kontroly zadaných čísel (ean, čísla karet, čísla účtů, sipo, ...). Lze to samozřemě řešit ve VBA, pro mne je pro rychlou kontrolu často rychlejším řešením maticový vzorec (třeba obalený skalárním součinem).
Příklad pro formátování:
=A(MOD(SUMA(--ČÁST(ZPRAVA("000000"&ZLEVA(A1;IFERROR(NAJÍT("-";A1)-1;0));6);ŘÁDEK(NEPŘÍMÝ.ODKAZ("1:6"));1)*{10;5;8;4;2;1});11)=0;MOD(SUMA(--ČÁST(ZPRAVA("0000000000"&ČÁST(A1;IFERROR(NAJÍT("-";A1)+1;1);20);10);ŘÁDEK(NEPŘÍMÝ.ODKAZ("1:10"));1)*{6;3;7;9;10;5;8;4;2;1});11)=0)
Vzorec otestuje číslo účtu bez lomítka a kódu banky. Samozřejmě je maticový.

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.

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.

Pokud jde o jeden měsíc tak lze
=SUMIFS(A:A;B:B;"CZ";C:C;">=1.měsíc.rok";C:C;"<=Poslední.měsíc.rok")

Například v D1 je měsíc, v E1 je rok:

=SUMIFS(A:A;B:B;"CZ";C:C;">="& DATUM(E1;D1;1);C:C;"<="& EOMONTH(DATUM(E1;D1;1);0))

Teprve teď jsem si všiml, že AL napsal totéž. 1

Pokud potřebuješ více měsíců, můžeš vzorec "namnožit" pro jednotlivé měsíce a sečíst nebo totéž udělat maticovým vzorcem:

{=SUMA(SUMIFS(A:A;B:B;"CZ";C:C;">="& DATUM(E1:E3;D1:D3;1);C:C;"<="& EOMONTH(DATUM(E1:E3;D1:D3;1);0)))}

(Bez složených závorek ale při ukládání použij ctrl-shift-enter)
V příkladu jsou v D1:D3 měsíce a v E1:E3 odpovídající roky.

Posílám ukázku

To nebyl dotaz.

Prostě pokud někdo si chce udělat rychlý přehled za minulý týden, tak data jsou posunuta o den. 7

Funkce zřejmě není moc používána. Prostě jsem v kot. tabulce zkusil rychle vybrat minulý týden. Pak jsem chvíli hledal chybu. Tohle mne hned nenapadlo.

Nástroj je to dobrý, ale chyb ja v něm na můj vkus docela dost. Tahle je další.

Možná slovenská verze je OK?

Zdravím.

Všimnul jsem si chování filtru kal. dat v kontigenční tabulce.

Pokud filtrujeme minulý, tento nebo příští týden, tak podle mikrosoftu týden začíná v neděli, končí v sobotu.

Verze min 2010 až 2016.

Taky je tu index:

=INDEX($A$1:$HVT$12;ŘÁDEK($1:$12);TRANSPOZICE(ŘÁDEK($1:$1000))*6-5)

(Maticově)

ad věk. Pokud to zůstane, jak je psáno, tj. je tam jen jeden uzavřený interval,
tak bych použil kontingenční tabulku.

Do řádků věk, seskupit, začátek = 18, konec = 26, krok 8.

a je to.

Viz data - citlivostní analýza, tabulka dat, případně správce scénářů.

Zkuste také zadat B1: =SUMA($A$2:A1), C1: =SUMA(A1:$A$2) a C1 také zkopírujte dolů.

A Excel tyto vzorce vyhodnocuje jako různé.

Jinak řečeno - kotva jednoho rozhu uprostřed bloku dělá neplechu.

Narazil jsem na to, když jsem hledal rozdílné vzorce (přejít na - jinak - rozdíly (ve sloupcích|řádcích)

Ještě soubor

Add okruhy:

Je třeba omezit počet proměnných. Místo vyplňování úhlopříčky lze nastavit nějaké řešení (nemusí být optimální) vybrat do pole proměnných jen zadané okruhy a hledat, jestli se nenajde menší počet balíků.

Když máte nalezený potřebný počet balíků seskupte nalezené řešení tak, aby použité okruhy byly v sousedních sloupcích (bez balíků s nulovou délkou mezi nimi). V buňce spočtěte max odpad.
Zadejte jako proměnné jen vybrané okruhy, cílová funkce je v buňce se spočteným max. odpadem a hledáme maximum.

Tato varianta neptimalizuje ostatní balíky. Pokud je v ostatních balících velký počet poměrně dlouhých kousků, lze vyčlenit balík s nejdelším zbytkem a proceduru zopakovat pro ostatní balíky.

Na příkladu jsem zkusil míslo prostého max hledat maximum sumy čtverců, což by mělo preferovat větší rozdíly mezi zbytky (velké by měly být co největší, malé naopak), ale dávalo to trochu horší výsledky.

OK

Opomněl jsem jedno omezení:
$I$2:$I$9>=0

A u cílové funkce hledáme nejmenší počet úseků. Je nutné zaškrtnout min.

Evoluční algoritmus nehledá absolutní optimum, ale generuje varianty a testuje, jestli se cílová funkce mění potřebným smerem. Pokud se dlouho nic nemění, tak se algortimus zastaví. Obvykle je výsledek dost dobrý. Pokud ne, lze ho spustit znovu, případně před opakovaným spuštěním ještě vhodně změnit některou z proměnných.

řešitel:

Do A2:A9 dejte délky úseků
Do B1:I1 čísla 1-9 (označení balíků)

Nejprve nastavíme počáteční stav : z každého balíku vezmeme jeden úsek. - diagonálu oblasti B2:H8 vyplníme číslem 1.

Poslední balík dopočteme:
Do I2 : =1-SUMA(B2:H2)
a zkopírujeme ho do i3:i9

Dále sečteme použité délky v balíku. Do B10 : =SOUČIN.SKALÁRNÍ($A$2:$A$9;B2:B9)
a zkopírujeme do C10:i10.

Do j10 vložíme cílovou funkci: =COUNTIF(B10:I10;">0")

řešitel:
cílová funkce: j10
proměnné : $B$2:$H$9
metoda : evoluční algoritmus
zaškrtnout podmínku nezápornosti

podmínky:
Proměnné jsou <=1 a celá
$B$2:$H$9<=1
$B$2:$H$9 = celé

V posledním balíku jsou úseky nejvýše po jedné:
$I$2:$I$9<=1

Délky jsou <= 200:
$B$10:$I$10<=200

Spusťte řešení


Strana:  1 ... « předchozí  20 21 22 23 24 25 26 27 28   další » ... 37

Uživatelské menu

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

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

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

Aktivní diskuse