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í!
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.
Nepochopil jsem, co máte na mysli s tou deformací. Skrývání řádků pod obrázkem nemá vliv na jeho deformaci, pokud u obrázku nastavíte jeho vlastnost "neměnit velikost s buňkami".
Když jsem z nástroje odstranil vracení formátovaného vzorce do zdroje, odstranil jsem s tím současně své problémy s maticovými vzorci. Teď by nástroj měl zvládat i tyto vzorce. Nástroj je v příloze.
Kromě několika stylistických změn jsem odstranil tabelační vadu, které jsem si všiml v příkladu od elCHa. Hlavní viditelnou změnou nástroje (vedle úbytku dvou tlačítek) je přidání "tabulátorů" do sformátovaného vzorce, jejichž cílem je zvýraznit hierarchické vztahy mezi součástmi vzorce.
Snad si v této podobě můj nástroj najde své příznivce mezi těmi, kteří jsou nuceni luštit cizí super/giga/mega vzorce.
Zkuste postup, který používám bez jakýchkoliv problémů:
- vyberte oblast buněk, které chcete využít,
- oblast vložte do schránky pomocí Ctrl+C,
- přemístěte se na cílový list a vyberte buňku pro levý horní bod,
- z nabídky Doma / Vložit z dolního řádku ikon možnost O (obrázek) nebo P (propojený obrázek).
Vznikne přitom objekt s obrazem vybrané oblasti. Ten můžete následně jak zvětšit nebo zmenšit, případně naplnit jeho pozadí nějakou barvou. Obrázek lze skrýt a zpátky zobrazit, případně přemístit. Při volbě propojeného obrázku se budou hodnoty buněk na obrázku dynamicky měnit podle změn v příslušných buňkách.
Mám zájem o každou odezvu v tomto vlákně. Proto děkuji. Ačkoliv uvedený příklad není moc úhledný, výsledek splňuje záměr, který bych očekával. Funkce NEBO má tři argumenty a sama je prvním argumentem funkce KDYŽ (jeho podmínka). Druhým argumentem funkce KDYŽ je "" (větev ANO) a třetím je IFERROR (větev NE). Prvním argumentem této funkce je ZÍSKATKONTDATA s 10 argumenty. Erorová větev pro IFERROR je "".
Nedoladěnost ve smyslu toho, že každá funkce nezačíná na vlastním řádku, byl můj záměr, který měl zabránit zbytečnému narůstání počtu řádků naformátovaného vzorce. Pokud to působí jako nedoladěnost, není problém výstup přizpůsobit.
Co se týká správného odsazování řádků, to je závislé na použití neproporcionálního písma (např. Courier New), které RefEdit v sešitě používá a ve kterém by měl být výsledek naformátování prezentován. Pro pochopení vnitřní struktury vzorce je zvolená forma jeho prezentování podle mého mínění dost názorná.
Tlačítka dělají to, co je na nich napsané. Opravdu je možné vzorec v rámci RefEditu upravit a opravdu je možné takto upravený vzorec vrátit do zdrojové buňky (včetně zachování jeho formátu). Vzorec samozřejmě napřed projde logickou kontrolou na formální správnost. To jsem skutečně pečlivě testoval a nenarazil jsem na chybu.
Služba, o které elCHa píše na závěr (vracení výsledků jednotlivých funkcí), je po mém soudu uspokojivě řešená v rámci standardní služby Vzorce / Vyhodnocení vzorce.
Za hlavní nedostatek svého nástroje pokládám to, že se zatím nevypořádá s maticovými vzorci. Na tom teď pracuji a až to dám dohromady, rozšířený nástroj opět zveřejním. Snad elCHa počká na tu rozšířenou verzi, k níž mu zašlu i slíbená hesla jako svůj dík.
Nedávno jsem tady otevřel vlákno Luštění megavzorců. V jeho diskuzi mne zaujal příspěvek, který zaslal Al s tím, že on v případě potřeby formátuje vzorec do řádků s odsazením. Ten postup jsem znal, ale zejména u cizích vzorců mi tato jejich manuální úprava, nápomocná pochopení vzorce, připadá nadměrně pracná.
Odsud už byl jen krůček položit si otázku, jestli takovou úpravu vzorce nelze provést pomocí makra. Odpověděl jsem si na ni sešitem, který je v příloze. Tento sešit se otevře a do popředí se umístí sešit se zkoumanými vzorci.
Označí se buňka se vzorcem a zkratkou Alt+h se zavolá jeho rozbor. Vzorec lze v této formě upravovat a výsledek po úpravách vrátit do zdrojové buňky. Na výběr je, jestli se vzorec vrátí v jednořádkovém provedení, nebo naformátovaný do řádků s odsazením.
Sešit posílám jako černou skříňku se zamčeným kódem. Potřebuji pomoci s testováním nástroje na vašich vzorcích. Pokud kdokoliv z vás zdokumentuje vadnou odezvu nástroje nebo přijde s nápadem, jak funkci nástroje zlepšit, rád mu pošlu hesla k listu i projektu VBA jako odměnu. Předem děkuji za spolupráci!
Vada spočívala v nastavení ScrollArea na konkrétním listu. Už jsem tu věc napravil. Jenom nevím, proč to nastavení vyhovovalo několik let a přestalo až někdy o tomto víkendu. Jestli jde o důsledek nějakého updatu na Excelu v posledních dnech, to nevím. Omlouvám se za dotaz, který jsem nakonec zvládl sám.
V sešitě, který již několik let slouží sběru dat, se v posledních dnech objevila divná vada. Při hledání pomocí Ctrl+F se sice hledaná buňka s textem najde, ale nedojde k potřebnému posunu obrazovky, aby bylo na nalezenou buňku vidět. Stejnou vadu vykazuje chování zkratky Ctrl+End.
Vada se ale týká jenom posunu směrem ke konci prohledávané tabulky. Při hledání směrem k začátku tabulky (stejně jako při Ctrl+Home) k posunu obrazovky dochází.
Napadá někoho, co může být příčinou popsané vady a jak se jí zbavit?
Nedalo mi to a problém se jmény funkcí ve vzorci jsem vyřešil po svém. Identifikované názvy funkcí jsem ve vzorci podtrhnul a tyto názvy jsem přidal do červeně zvýrazněných bloků. Navíc jsem dolní tabulku doplnil o název uvádějící funkce v bloku Úprava nástroje je v příloze. Teď už snad ten nástroj dozrál pro rutinní použití.
Dingo, dík za námět! Samozřejmě mne napadlo zvýraznit názvy funkcí; jen mám problém jednoduše identifikovat, co je a co už není název funkce (vedle standardních funkcí listu by bylo nutné zohlednit i UDF). Pro oddělování argumentů ve funkcích slouží právě ty uvozovky, které umožňuji zvýraznit.
Co se týká vyhledání požadovaného podřetězce je nejvhodnější použít šipky nahoru a dolů při procházení řádků v tabulce.
Maticové vzorce nástroj Zavorky neumí (lépe řečeno - neřešil jsem to)!
Logické rozčlenění vzorce pomocí odsazování a řádkování je velmi účinný postup při psaní rozsáhlých vzorců. Pro následnou analýzu to je ale značně pracný postup. Použití Notepadu++ mne pro analýzu vzorců z Excelu nenapadlo.
Ještě jednou jsem se k nástroji Zavorky vrátil. Vedle závorkových dvojic ( ) mají ve vzorcích rozčleňovací roli také dvojice uvozovek " " pro vymezení textových konstant. V rámci nich se závorky a středník chovají jako běžné znaky. Z toho důvodu jsem rozklad vzorce obohatil o vymezení textových konstant v uvozovkách - viz příloha.
Do nástroje Zavorky jsem přidal detailnější práci se separátorem ';' (středníkem), který v českém i slovenském Excelu představuje vedle závorek další rozčleňovací element, určující postup při vyhodnocení vzorce.
Vzhledem ke slušnému zájmu o stažení včerejší přílohy přikládám nyní vylepšenou verzi nástroje.
Megavzorce se píšou daleko snadněji, než se jejich obsah dá následně číst. Z praxe vím, že úprava cizích megavzorců je pro běžné uživatele Excelu velmi obtížný až neřešitelný úkol. I když je práce se vzorci v Excelu podpořena řadou nástrojů, pořád něco chybí. Při hledání, jak si v této oblasti účinně pomoci, jsem spáchal nástroj Zavorky.xlsm. Mám pocit, že jde o použitelnou pomůcku na rozložení vzorců do logických celků, vymezených závorkovými dvojicemi. Nástroj je v příloze.
Pokud shledáte, že je to pro vás použitelné, přivítám nápady, jak funkci toho nástroje vylepšit.
Kdyby funkce ZAOKR.NAHORU měla jediný parametr, bylo by Pavlusovo řešení funkční. Po odstranění literálu ZAOKR.NAHORU ale způsobí druhý povinný parametr funkce logickou chybu ve vzorci, s níž nelze vzorec uložit. Použití "najít a nahradit" proto selhává. Domnívám se, že tady by pomohlo jen řešení s pomocí dost složitého makra. Zato ale ten problém opravdu nestojí.
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
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.