» Poradna » Programy

Excel - nahrazení "když"

 |   |  Microsoft Windows 7 Chrome 60.0.3112.113

Zdravím, Snažím se vytvořit vzorec v excelu, kde funkce "KDYŽ" má více jak 64 argumentů (asi 250) a to z toho důvodu, že v sobě obsahuje další vzorce pro výpočet v závislosti na první buňce. Zasekl jsem se na tom počtu 64 a můj dotaz zní - nevíte, jak tuhle záležitost buď obejít, nebo to vymyslet jinak?Vzorec je nějak takhle =KDYŽ(A2="p";SUMA((((C2/1000)*(D2/1000)*(E2/1000)*F2)*7850)*1,08);KDYŽ(A2="pl";((((C2/1000)*(D2/1000)*(E2/1000)*F2)*7850)*1,08);KDYŽ(A2="tr";(C2*C2*3,14/4*E2*7850/1000000000*F2)-((C2-D2)*(C2-D2)*3,14/4*E2*7850/1000000000*F2)*1,08;KDYŽ(A2="KR";C2*C2*3,14/4*D2*7850/1000000000*E2*1,08;KDYŽ(A1= a tak dále a dále.

Odpovědi na otázku

 |   |  Microsoft Windows 7 Firefox 55.0

Zkusil bych nasadit makro, příkaz Select Caseviz http://office.lasakovi.com/excel/vba-teorie-zaklady/...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 60.0.3112.113

Obecné možnosti:- funkce KDYŽ, ZVOLIT, v daném množství tabulka a vyhledávací funkce Každopádně za 15 let jsem nikdy neměl potřebu 250 větvení a nějaký přechod k VBA není řešení. V takovém množství větví se v Select .. Case nevyzná stejně ani prase.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Firefox 55.0

funkce ZVOLIT může mít za argument (index) jen celé číslo. Tazatel potřebuje řetezce. Ale souhlasím, že chyba bude v návrhu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 60.0.3112.113

Jde o výběr předem nadefinovaných vzorců, které jsou dále vázány na předem napsané konstanty (výpočet váhy materiálu, který se váže v normovaným konstantám). Samotné vzorce na výpočet fungují, ale jakmile je sesumarizuji do jednoho vzorce "když", excel mi vyhodí chybu, respektive napíše NEPRAVDA a to z toho důvodu, že přesahuji 64 argumentů. Pakliže by to šlo udělat i jinak, rád to změním, ale zatím nevidím jinou alternativu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 IE 11.0

No já bych asi napsal těch 250 vzorců pod sebe do tabulky (jako první sloupeček by byla ta textová konstanta, podle které se ty vzorečky vybírají) a pak pomocí SVYHLEDAT bych jen vybíral ten správný výsledek

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 60.0.3112.113

No, ale výsledek těch vzorců je závislej na vstupních datech (u některých vzorců je potřeba zadat průměr, u jiných rozměry, u dalších šířku stěny) a ty se mění + se násobí právě předem nadefinovanými konstantami.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 62.0.3202.18

no ale od pohledu na kus vzorce který si poslal je to perfektní volba. VLOOKUP použít pro matchování vzorce podle konstanty v A2 ...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 60.0.3112.113

Ten smysl má být následující, abych to popsal dobře:Do A1 zadám hodnotu (na výběr jich budu mít řekněme 10) a dle tý hodnoty se mi má zobrazit v F1 výpočet, kterej bere v potaz hodnoty vB1, C1, D1 a E1, který tam ale taky následně zadám.Čili já zadámA1 = pB1 = 10C1 = 20D1 = 30E1 = 40F1 = (předem nadefinovanej vzorec, kterej udělá A1xB1xC1xD1).Když ale zadám:A1 = wB1 = 10C1 = 20D1 = 30E1 = 40pak chci, aby mi v F1 vyskočil vzorec, kterej spočítá jen (A1xB1xC1) a ignoruje D1 a E1. Takhle je to zjednoduššenej princip, pak jsou na to napojený právě konstanty výpočtu, kdy například zadámA1=zB1 = 10C1 = 20D1 = 30E1 = 40A v F1 automaticky naskočí vzorec, kterej vypočítá (B1xC1xD1x(A1 z jinýho listu - předem nadefinovaná konstanta). Dává to větší smysl?Nevím moc, jak do toho SVYHLEDAT zakomponovat, abych dosáhl takovýho výsledku

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 62.0.3202.18

A1= určující znakkaždý určující znak = jiná rovnicevytvořím tabulku rovnic a určjících znakůvlookup (svyhledat)hodnota v A1 mi vždy vytáhne tu rovnici kterou chci

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 60.0.3112.113

Udělal jsem to tak, jak říkáte, nicméně se stále potýkám s problémem proměnných buněk ve výpočtu. Čili mám nadefinovány určující znaky.Do A1 zadám "V" a v F1 mi vyjede vzoreček, respektive jen výsledek vzorečku, kterej ignoruje buňky B1, C1, D1 a E1 (tabulky s nadefinovýním určujících znaků a k nim odpovídajícím vzorcům je na jiným listě než tabulka s výpočtem). Takže bych potřeboval, aby ta funkce s výpočtem byla funkční a pracovala s tím, co zadám do B1,C1,D1 a E1 a ne aby se mi zobrazoval jen výsledek, kterej si musím dopočítat na jiným listě, kde mám nadefinovány určující znaky a k nim vzorce.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 62.0.3202.18

U mě funguje na první pokus:a1,b1,c1,d1 ... atd ... prostě to kam zadáváte vaše hodnoty nechte jak jena dalším listě vytvořte tabulku:první sloupec všechny indikátory co dáváte do A1druhý sloupec vzorec podle indikátoru - ale nezapomeňte vzorec mít nalinkovaný na vaše buňky b1 až XXX1 z prvního listupotom do buňky výsledek dejte vzorec: =vlookup(A1;X1:Y2;2;false) kde X1:Y2 je oblast té vytvořené referenční tabulkystane se to že když změníte hodnotu A1 tak se do buňky výsledek dá výsledek který potřebujete (ignorujte to, že se vám v referenční tabulce počítá všechno... protože když zadáte správnou kombinaci vstupních parametrů tak dostanete to co chcete)..... dalšími sloupci v referenční tabulce si můžete ošetřovat třeba i chybové stavy typu: zapoměli jste zadat hodnotu D1 ... .nebo hhodnota B1 není pro tento výpočet relevantní .. .atd .... to dodáte dalšími vlookupy ....

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 60.0.3112.113

Děkuji, udělal jsem to přesně tak, jak říkáte, nicméně ani toto řešení nefunguje tak, jak je potřeba, takže jsem zřejmě udělal něco špatně. Navázal jsem vzorce na výpočtový list (to jsem původně neměl, proto mi to vyhazovalo nesmysly). Teď mám tedy list "Výpočet", kam zadávám do A1 indikátor (písmena a-z) a B1,C1,D1,E1 jsou vstupní parametry, přičemž F1 je výsledek výpočtu. Na listě dvě "Příprava výpočtu" mám nadefinované A1 (a-z) a u každého indokátoru napsanou rovnici, která je navázaná na list "Výpočet", čili ze bere jako vstupní parametry to, co se zadá do listu "Výpočet". Tady ale narážím na problém. V první řadě pokud zadám do buňky A1 indikátor Z, výpočet proběhne v pořádku, výsledek je správně. Pokud změním parametry, změní se samozřejmě i výsledek. Pokud chci ale o řádek níž provést výpočet stejného indikátoru Z (A2=Z) výsledek už se nemění, zobrazuje jen hodnotu A1 a neprovádí další výpočet (vzorec v listě "Příprava výpočtu" počítá jen s buňkami A1-E1 a samozřejmě neumí zadat výsledek k A2-E2.Zadat tedy do buněk A1 - A10 stejný indikátor Z a rozdílné parametry ve sloupcích B-E, výsledek F se nemění. Jako jedno řešení mě napadlo udělat velkou tabulku v kartě "Příprava výpočtu", kde bych nadefinoval všechny vzorce pro jeden řádek na kartě "Výpočet" a pak je nakopíroval třeba 200x pod sebe, ale to při složitosti vzorců by zabralo opravdu dlouhou dobu a nechce se mi věřit, že by neexistovalo jednodušší řešení.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 60.0.3112.113

Tak bohužel ani takové řešení není možné, jelikož SVYHLEDAT nedokáže zaměřit více sloupců. Vzorec teď vypadá následovně: =SVYHLEDAT(A5;'Příprava výpočtu'!$B$3:$I$15;8) Kdyby uměla vyhledávat z řádku, naházel bych ty vzorce vedle sebe do jednoho řádku, nakopíroval to 100x pod sebe a teoreticky by to mělo fungovat.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 IE 11.0

no na hledání v řádku je HVYHLEDAT

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 60.0.3112.113

Teď nevím, co přesně myslíte, poněvadž HVYHLEDAT jako funkci mi to ani nezobrazuje jako existující.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 IE 11.0

to byl překlep VVYHLEDAT je správný název

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Edge 15.15063

I kdybys našel jiné řešení než funkci KDYŽ, což by třeba mohla být funkce SOUČIN.SKALÁRNÍ, myslím, že narazíš na maximální počet znaků ve vzorci.Maximální počet znaků ve vzorci je 8192. U starších verzí to bude určitě ještě méně.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 60.0.3112.113

Udělal jsem to tak, jak jsem popsal výše - skrze SVYHLEDAT funkci, nicméně jsem narazil na problém, že výsledky se nepřepočítávají tak, jak bych potřeboval, takže jsem se zasekl znovu na bodě mrazu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 55.0

Šel bych na to následovně:1. Každý sloupec, který bude vstupovat do výpočtu, bych pojmenoval (např. sloupec B jako "ARG_1", C jako "ARG_2" apod.) - viz https://jnp.zive.cz/usnadnete-si-praci-v-exce... 2. Do tabulky, kterou budeš prohledávat pomocí SVYHLEDAT bych ty vzorce napsal tak, aby používaly výše zavedené pojmenování - tedy místo "=B1+C1" napsat "=ARG_1+ARG_2". Ale pozor - buňky se vzorci musí mít nastaven formát na Text, aby nedošlo k vyhodnocení vzorce v té tabulce. Čili - musíš vidět zapsaný vzorec, nikoli jeho výsledek!3. Dle postupu zde: https://www.extendoffice.com/documents/excel/1683-exce... vytvoř v editoru maker funkci EVAL.4. Funkci SVYHLEDAT, která bude vracet text vzorce, obal voláním té své funkce EVAL (tj. budeš mít "=EVAL(SVYHLEDAT(....))"Tím pojmenováním sloupců zajistíš, že můžeš mít vyhledaný vzorec na jakémkoliv řádku a jako argumenty bude brát data právě z toho řádku.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 60.0.3112.113

Jelikož napsat makro je pro mě prakticky nemožné, poněvadž moje skills v Excelu nejsou až na tak vysoké úrovni, napadlo mě to celé ještě vzít z jiné stránky, ale potřeboval bych poradit s finálním vzorcem.Na Listě 1 mám nadefinovanou tabulku se vzorcema, které jsou navázány na List 2. V Listě 2 zadávám do sloupce A1 indikátor (číslo od a-z), pak mám 4 pole, do kterých vyplňuji čísla (na základě kterých probíhá výpočet v Listě 1) a vedle toho pole, ve kterém se mi zobrazuje výsledek.Samozřejmě pro každý vstupní indikátor (a-z) je vzorec jiný a pracuje s jinými buňkami a zbytek ignoruje. List 1 tedy obsahuje vzorec na základě údajů, které sehnal v Listě 2 a já pak pomocí SVYHLEDAT doplním výsledek. Vzorec vypadá takto: =SVYHLEDAT(A7;'Příprava výpočtu'!$B$3:$I$15;8;NEPRAVDA) Bohužel ale když skočím do dalšího řádku a zadám do indikátoru A2 stejné písmeno a do následujících 4 polí jiné veličiny, dostanu výsledek z přechozího řádku a indikátoru A1. Napadlo mě tedy, že pokud bych v Listě 1 vytvořil tabulku, kde bych měl v jednom řádku vzorce vedle sebe v řadě a do SVYHLEDAT zakomponoval nějak funkci KDYŽ, která by mi říkala, že KDYŽ(A1=a);zobrazit buňku B3 z Listu 1;KDYŽ (A1=b, zobazit buňku B4 z Listu 1).Následně bych řádek v Listě 1 nakopíroval 100x pod sebe (víc jich totiž potřeba nebude) a to stejné udělal se vzorcem v Listě 2 (SVYHLEDAT se zakomponovanou funkcí KDYŽ) a tím by se měl celý problém vyřešit. Dvě zásadní věci tedy jsou:1) Je to řešení?2) Jak by měla vypadat funkci SVYHLEDAT se zakomponovaným KDYŽ, aby se dala lehce nakopírovat?Děkuji moc za rady a odpovědi.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 IE 11.0

Bez maker by to šlo např. takto- ke každému řádku si vypočítej výsledky pro všechny možné funkce (do více sloupců)- udělej si menší tabulku s indexy (pořadím - první fce bude mít 1, atd.) těch všech funkcí, jak byly vypočítány výše- nakonec vyber výsledek pro správnou funkci pomocí indexu - stejný řádek a sloupec zjištěný pomocí svyhledat a té pomocné tabulky s indexy- jednoduchý příklad s dvěma funkcemi (vše na jednom listu) by vypadal takto: =INDEX(E:F;ŘÁDEK(A2);SVYHLEDAT(A2;$H$2:$I$3;2;NEPRAVDA))

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 IE 11.0

... nebo ještě elegantněji bez tabulky s indexy=VVYHLEDAT(A2;E:F;ŘÁDEK(A2);NEPRAVDA)- první řádek v tabulce se všemi výpočty musí být příslušné názvy

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 60.0.3112.113

Tomu moc nerozumím.Udělal jsem si tabulku s výsledkem funkcí (dohromady 14 řádků F2 - F15) a 12 sloupců (F2 - Q2), přičemž první řádek (F2 - Q2) obsahuje jen písmena a,b,c, atd.) Takže celkově mám tabulku F2-Q15, kde řádek F2-Q2 obsahuje a,b,c,d,atd.)Moje celková funkce pro výpočet na hlavním listě tedy vypadá takto: VVYHLEDAT(A8;'Příprava výpočtu'!F2:Q15:F;ŘÁDEK('Příprava výpočtu'!A2);NEPRAVDA)Ke tedy do A8 zadám a,b,c,d a podle toho by mi to mělo vyhodit to, co to najde v řádku A2 na listě "Příprav výpočtu", ale bohužel se tak neděje. Místo toho mám jen chybovou hlášku název.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 IE 11.0

Když máte hlavní tabulku vůči listu "Příprava výpočtu" o pár řádků posunutou dolů, musíte to zohlednit ve vvyhledat. Pokud hlavní tabulka začíná na řádku č. 8 a přípravy výpočtu mají na řádku č. 1 názvy funkcí, vypadá vzorec takto=VVYHLEDAT(A8;'Příprava výpočtu'!F:Q;ŘÁDEK(A8)-ŘÁDEK($A$8)+2;NEPRAVDA)

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 7 Firefox 55.0

Kolik to tak asi bude mít řádků? Možná bude jednodušší vymyslet to makro, než na 1000 řádcích nechat bobtnat ty stejné vzorce.

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Excel, 1000


Určitě si přečtěte

Hledá se způsob, jak uložit elektřinu. Možná pomohou obří gravitační baterie

Hledá se způsob, jak uložit elektřinu. Možná pomohou obří gravitační baterie

** Jak uložit elektřinu z fotovoltaiky a větrných turbín ** Pomohou třeba staré autobaterie, nebo setrvačníky ** A pak tu jsou bizarní gravitační akumulátory velikosti mrakodrapu

Jakub Čížek | 254

Vybrali jsme 21 programovatelných hraček a stavebnic pro děti i jejich rodiče

Vybrali jsme 21 programovatelných hraček a stavebnic pro děti i jejich rodiče

** Získejte děti pro matematiku a základy techniky ** Kupte jim hračku nebo stavebnici, které vdechnou vlastní život ** Vybrali jsme 21 stavebnic pro malé caparty i budoucí experty na A.I.

Jakub Čížek | 11

Co je TikTok: Svérázná sociální síť chytla mladé uživatele, už jich má už 1,5 miliardy

Co je TikTok: Svérázná sociální síť chytla mladé uživatele, už jich má už 1,5 miliardy

** Sociální síť TikTok získala stamiliony uživatelů a stále roste ** Jaký obsah na ní najdete a co můžete v jejím rámci čekat? ** Je to zábava pro mladé, nebo platforma pro úchyláky?

Karel Kilián | 37

Podívejte se, jak umírá váš laptop. Desítky na to mají mocný nástroj powercfg

Podívejte se, jak umírá váš laptop. Desítky na to mají mocný nástroj powercfg

** Hardware současných laptopů už tak rychle nestárne ** Tedy až na baterie – ty umírají děsivou rychlostí ** Ve Windows to můžete sledovat skoro v přímém přenosu

Jakub Čížek | 69

13 praktických tipů a triků pro Mapy.cz, které možná neznáte

13 praktických tipů a triků pro Mapy.cz, které možná neznáte

** Mapy.cz neslouží jen k zobrazení podkladů a plánování tras ** Nabízejí celou řadu dalších praktických funkcí a možností ** Vybrali jsme třináct tipů a triků, o kterých možná nevíte

Karel Kilián | 36

Co všechno se spouští se startem Windows a proč by vás to mělo zajímat

Co všechno se spouští se startem Windows a proč by vás to mělo zajímat

** Společně s operačním systémem se spouští řada aplikací a služeb ** Mohou mít negativní dopad na celkovou dobu startu Windows ** Jak získat kontrolu nad automaticky spouštěnými programy?

Karel Kilián | 60



Aktuální číslo časopisu Computer

Test 9 bezdrátových reproduktorů

Jak ovládnout Instagram

Test levných 27" herních monitorů

Jak se zbavit nepotřebných věcí na internetu