Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  29 30 31 32 33 34 35 36 37   další »

Pokud vkládáte vzorec do tabulky, tak se to v základním nastavení dělá Excel automaticky. Možná to máte jen vypnuté.
(soubor,možnosti, kontrola pravopisu, tlačítko možnosti automatických oprav, automatické úpravy formátu při psaní, zaškrtnout vyplnit vzorce v tabulkách)

Zkuste vlastnost DisplayFormat

@marjankaj

Jak to spustit z listu?

A musí to být z listu?
Vy to nepochybně umíte. A má cenu se dohadovat o tom, na co se tazatel ptal? Vovka má pravdu. Jediné co jistě vím je, že tazatel chtěl generátor a jediná jeho reakce byla, že vzorec mu nefunguje.

Ještě jeden článek k sattistice a náhodným číslům v Excelu (2010, 2013)

http://epublications.bond.edu.au/cgi/viewcontent.cgi?article=1179&context=ejsie

@eLCHa

Pár pojednání o generování náhodných čísel v Excelu.
Zatím jsem nenašel poslední verze. Vyplývá z toho, že pro náročnější úlony nic moc a že když MS hlásá zlepšení, tak je to notnou brát s velkou rezervou a prověřovat.

http://www.pages.drexel.edu/~bdm25/excel-rng.pdf

http://www.pages.drexel.edu/~bdm25/excel2007.pdf

https://www.random.org/analysis/

http://www.amstat.org/sections/srms/Proceedings/y2004/files/Jsm2004-000710.pdf

http://www.amstat.org/sections/srms/proceedings/y2001/proceed/00109.pdf

https://support.microsoft.com/en-us/kb/828795

http://homepages.ulb.ac.be/~gmelard/rech/gmelard_csda23.pdf

Co se týká jistoty, že funkce NÁHČÍSLO nevrátí vícekrát stejné číslo, tak ta ve 100% případů samozřejmě není. Je hodně malá, k jejímu odhadu nemám data (v jednom z uvedených článků je zmínka, že perioda použitého staršího algoritmu je cca 2^43).

Ale. Je snadné zkontrolavat, že se čísla jsou OK (5050 - suma = počet stejných čísel v sadě).
Dále. Z vágního dotazu se tu vyrojilo několik variant co by mohl tazatel potřebovat a jak by řešení mělo fungovat.

Metodu s =NÁHČÍSLO() + setřídit používám k náhodnému uspořádání dat. Tady mi případná shoda nevadí. Mimochodem, i to je řešení.

V prvním sloupci stačí jen

=NÁHČÍSLO()

K ostatním výhradám.

Uvědomte si, že 200 tis vzorců není nic přehnaného.
Např. při 20 sloupcích se to vejde na 100 řádků.
Vzorce celkem běžně bývají složitější než je volání jedné funkce a několika sekundový přepočet podobného listu by určitě neobstál.

Metoda Calculate přepočítá jen co je nutné. Protože v testu nejprve opakovaně spustím celkový přepočet aby se vyřešily případné změny a aby se aspoň trochu rozběhl procesor je čas cca 15 msec skutečně jen časem kontroly, že nic počítat není třeba.
V případě RoundX ovšem je nutné přepočítat volatilní funkci tak se také přepočítá.

Metoda .EnableCalculation=False zakáže přepočet listu. Po jeho povolení Excel neví, jestli se něco změnilo, tak při dalším přepočtu metodou Calculate přepočte vše co je na listu.

Doba vlastního přepočtu 200 tis. funkcí Ceiling je na mém stroji cca 20 msec.

V případě volatilní RoundX se v tomto případě přepočte zase vše. Rozdíl mezi prostým přepočtem a úplným přepočtem je tedy minimální je způsoben dalšími procesy v počítači.

Slabinou Vašeho testu je, jak se už pokoušel vysvětlit eLCHa, že mícháte volání funkce/udf z listu a volání funkce metodou WorksheetFunction, případně přímé volání makra.

Tj. v případě volání Ceiling je zde poměrně velká režie metody WorksheetFunction (Vaše představa, že tam režie není, není správná), v případě volání UDF z listu je zde naopak doplňková režie (možná na kontrolu volatility, možná na kontrolu, zda funkce nedělá něco, co UDF dělat nesmí).

@Vovka

Přehlédl jste jednu drobnost.
Vzhledem k rozumným omezením na velikost přikládaných souborů jsem testované listy vyplnil jen jedním řádkem.

Je tedy nutné nejprve v listech vybrat první dvě buňky, ctrl-shift-šipka dolů, ctrl-d
a pak spustit test.

Případně lze samozřejmě změnit počet vyplněných buněk.

Opoměl jsem. Ve výpočtech je dobré vypnout přepočet tabulek.

Pokud ladím složitější výpočet, používám citlivostní analýzu, tabulka dat.

V případě jedné proměnné lze tak rychle zjistit a zaznamenat výsledky při různých vstupech, včetně mezivýsledků.

Pokud potřebuji otestovat více než 2 vstupy, je třeba trochu přemýšlet. Nejprve, jestli je to opravdu nutné.

Obvykle mi stačí citlivost výsledku ke změnám jednotlivých vstupů, druhá proměnná mi určuje, do která buňka se má měnit. Zjistím snadno citlivost výpočtu na různé vstupy. Fakticky tak v jednom kroku provedu více výpočtů s jednou proměnnou.

Jinak, pokud to opravdu nutné je, lze třeba tabulky zřetězit.
Fakticky jsem se k tomuto dostal když jsem zkoušel, jestli lze použít výstup z jedné tabulky dat jako vstup do druhé.

Pro jistotu, pro někoho možná některé detaily citlivostní analýzy nemusí být samozřejmé:
Vzorec, která tabulka dat vyhodnocuje, je prostý odkaz na výsledek výpočtu.
Měněné buňky jsou na listu s tabulkou a vstupy výpočtu na tyto buňky odkazují.
Pokud řeším více vstupů (citlivost, často užitečné) je nutno trochu upravit výpočet:
"Normální" vstupní data jsou jinde a v původní vstupní buňce je vzorec typu:
když(2.měněná buňka má moje číslo; vezmi 1. měněnou buňku; vezmi "normální" vstup)

Zkusil jsem to trochu jinak.

V souboru jsou v obou listech na 1. řádku číslo a vzorce =ZAOKR.NAHORU(A1;0,01) na listu CEILING
a =roundx(A1;0,1;1) na listu RoundX

Na řádku 200000 je zarážka, která usnadní zkopírování 1. řádku dolů.

Měřil jsem dobu přepočtu a úplného přepočtu obou listů s vyplněnými 200 tis. řádky. Přepočet se opakoval 5x a výsledkem je průměrný čas.

Výsledky:

List CEILING
Přepočet: 14,7 msec
Úplný přepočet: 36,9 msec

List RoundX
Přepočet: 3101,1 msec
Úplný přepočet: 3098,1 msec

Pro srovnání výsledek testu Vovky pro 200000 opakování:

Ceiling : 578 msec
RoundX : 703 msec

Můj závěr:

1. Metoda WorksheetFunction má o hodně vyšší režii, než volání funkce z listu.
2. Volání UDF z listu je o dost pomalejší než volání té samé funkce z listu.

K tomu cyklu.

Obvykle používám tabulku dat

@eLCHa

Částečně se chyba řeší, u funkcí CEILING a FLOOR ve 2010 přidali varianty CEILING.PRECISE a FLOOR.PRECISE, u kterých nezáleží na znaménku 2. parametru.

A ve 2013 doplnili funkce CEILING.MATH a FLOOR.MATH, které se blíží k tomu, co poslal Vovka (lze nastavit způsob zaokrouhlení záporných čísel).

Nechápu, proč opravují jen funkce CEILING a FLOOR.

Propagovaný "dolovací" sloupec nefunguje v případě porovnání listu.

Varianta s odkazy z pomocného listu zdánlivě vypadá lépe, ale pokud vytvořím propojení na celý list, tak prázné buňky najednou nejsou prázdné.

Takže to "Funguje to, jako když vystřelí z praku." platí jen v některých případech (bez prázdných buněk).

"Ručně" mazat odkazy na prázdné buňky není zrovna něco k doporučení.

Zbývá tedy jen kopie hodnot (vložit jinak, hodnoty, vynechat prázdné)

Pokud to má běhat automaticky, tak zřejmě makrem načíst porovnávané hodnoty a porovnat. A možná najít mechanismus na snažší hledání ve větším souboru.

Pokud porovnávám sešity, tak pro moji potřebu a používám pro definici odkazu některou formu jmen.

@Vovka
Pozor na definici jmen s relativním odkazem. Taky jsem líný a používám to, ale občas se odkaz posune o nějaké políčko.

Dovolil jsem si tabulku trochu doplnit a pozměnit některé komentáře.

Možná, že několik peprných slov ještě přibude.

Nedoplnil jsem další zaokrouhlovací funkce, např. WORKDAY, WORKDAY.INTN, HODNOTA.NA.TEXT, možná jsem něco dalšího vynechal.


Strana:  1 ... « předchozí  29 30 31 32 33 34 35 36 37   další »

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

Vynásobit hodnoty kurzem - Power Query

Alfan • 26.4. 7:56

Relativní cesta - zdroje Power Query

Alfan • 26.4. 7:54

Vynásobit hodnoty kurzem - Power Query

elninoslov • 26.4. 7:54

Vynásobit hodnoty kurzem - Power Query

lubo • 25.4. 19:18

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 15:12

Relativní cesta - zdroje Power Query

Alfan • 25.4. 15:08

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 14:21