< návrat zpět

MS Excel


Téma: Provedení určité funkce napsané v buňce rss

Zaslal/a 3.10.2013 10:48

Dobrý den,
dár bych požádal o radu ohledně zpracovávání funkcí. Mám MS Office 2010.

Situace:
Sloupec A řádky 3-5 mám vypsány textově funkce
SVYHLEDAT(B2;tabulka1;1;NEPRAVDA)
SVYHLEDAT(B2;tabulka1;2;NEPRAVDA)
SVYHLEDAT(B2;tabulka2;1;NEPRAVDA)

V B2 je hodnota, která se má v tabulkách hledat.

V buňce C2 mám pomocí "Ověření dat" nastaveno použítí SVYHLEDAT funkcí z buňěk A3,A4,A5.

V buňce D2 bych rád, aby proběhla funkce A3-5 dle toho, co je nastaveno v B2.

V přiloženém souboru je v modré oblasti znázorněno, jak to potřebuji a v růžové, jak to mám nyní. Vím, že by mohl někdo namítat, že tak, jak to mám v růžové oblasti je to správně, ale funkce jsou tu velmi zjednodušeny. Momentálně má funkce ZVOLIT z růžové oblasti čítá 400 argumentů (13 funkcí) a je to velmi náročné, protože tato funkce je v každé buňce tabulky 13*20 buněk. Já bych potřeboval, abych dle příkladu v modré oblasti měl vypsáno těch 13 funkcí textově v nějaké tabulce a jen dle výběru v Ověření dat by se vybrala určitá funkce, kterou by excel vykonal.

Snad jsem popsal situaci co nejlépe.

Soubor
http://ulozto.cz/xqKiv2Ks/priklad-xlsx

Děkuji za odpovědi.

S pozdravem
Mirek

Zaslat odpověď >

Strana:  1 2 3   další »
#015516
Opičák
Vůbec tomu nerozumím a protože tu není odpověď, obávám se, že tomu nerozumí nikdo.
Navrhovaný ostup mi připadá krkolomně složitý, "tahání" vzorců z nějakých buněk.citovat
icon #015518
avatar
Ja na rozdiel od Opičáka zadaniu asi rozumiem, ale riešenie na úrovni excel bez VBA nepoznám.
Tuším, že by to mohlo ísť cez pomenované vzorce, možno s funkciou Evaluate, ale v tej oblasti dosť tápam.
Určite by to šlo prostr. VBA, kde by si si tie jednotlivé varianty (v príklade tie 3 funkcie), zapísal do nejakého poľa, trebárs, a z neho potom vyberal cez select case...
Súhlasím ale s Opičákom v tom, že spôsob, ktorý volíš, je v každom prípade dosť krkolomný.citovat
#015523
avatar
A prečo si tam nedáš jednoducho pred ten text "="?
A namiesto funkcie si budeš hneď ťahať hodnotu?citovat
icon #015524
eLCHa

Opičák napsal/a:

Vůbec tomu nerozumím a protože tu není odpověď, obávám se, že tomu nerozumí nikdo.
Navrhovaný ostup mi připadá krkolomně složitý, "tahání" vzorců z nějakých buněk.


Kromě toho nerozumím, je to přesně to, co si myslím ;)
ulozto.cz mám blokované, takže stejně ani nemohu pomoci

@AL
Evaluate je fajn, zrovna nedávno jsem ji využil a vlastně ji používáte i vy (zápis [A1] místo Range("A1").value http://www.excelplus.net/forum/viewthread.php?thread_id=551)
Já bych jí takto nepoužíval, ale použil jsem v převodu databáze (do skrytého řádku jsem dal vzorec, který se má použít pro práci s čísly pod ním). To mi umožnilo použít pro všechny sloupce jednu proceduru, která má jako argument tento vzorec a v kódu je potom jen Evaluate(vzorec). Musel jsem ale použít anglické fce, protože české mi házely chybu.citovat
#015526
avatar
No, nevěděl jsem, jak se tady dá připojit soubor, tak jsem to řešil přes uložto.

Je to krkolomné, protože VB používat neumím. Jsem samouk pokročilý SQL+PHP vývojař a začátečník v C++ a další jazyk by mě asi z hlediska syntaxe zabil :D. Navíc, je to pro firemní účely a tady máme každý bohužel jinou verzi MS Office, tudíž se obávám o kompatibilitu, protože já mám nejnovější MS O a neznám rozdíly mezi novějšími a staršími verzemi VB.

@marjankaj: Nemůžu tam dát "=", protože by to vypočítávalo přímo do buňky, ke se vzorec nachází. Já ale potřebuju, abych si vybral kterým vzorcem chci počítat a určité buňce v jiné tabulce bych měl výsledek, odkud s tím dále pracuji. Proměnných je v originálním vzorci hodně, viz.
SVYHLEDAT(NEPŘÍMÝ.ODKAZ(CONCATENATE(NEPŘÍMÝ.ODKAZ(CONCATENATE("L";ŘÁDEK()));"!";"B15"));NEPŘÍMÝ.ODKAZ(SVYHLEDAT(NEPŘÍMÝ.ODKAZ(CONCATENATE(NEPŘÍMÝ.ODKAZ(CONCATENATE("L";ŘÁDEK()));"!";"B9"));core_type_actual;6;NEPRAVDA));2;NEPRAVDA)

1. Celá funkce je ve formátu SVYHLEDAT(hledat,tabulka,sloupec,typ) v listu Core v buňce M20, v M19 bych rád vybíral, který vzorec chci použít
2. hledat: načítám co hledat např. chci hledat z listu Test!B15. Ve sloupci L řádek 20 je název listu "Test", v buňce M20 je samotná víše uvedená funkce. Výsledkem je, že hledám v Test!B15
2. tabulka: načítám z listu Test!B9 název např. "Motor", který je v pomocné tabulce definovaného názvu "core_type_actual" (tabulka pro aktuální nastavení, kde si nastavuju předem známé hodnoty) a ve sloupci 6 této buňky mám další tabulku definovaného názvu "material_kov". Výsledkem tedy je, že tabulka, ve které se bude hledat bude "material_kov".
3. sloupec: sloupec 2
4. Typ: všude dávám NEPRAVDA, ale to už jste si asi všimli :D

Problém je toto je jen jedna buňka M20, jenže já mám takovou tabulku 13*20 kde ve sloupci L jsou různé listy, které je třeba hledat atd.

Filozofie je taková, že v buňce např. M19 si vyberu jaký vzorec chci použít (tak jak to mám v té modré oblasti v příkladovém souboru) a v M20 to podle vybraného vzorce vyhodí výsledek, který je vyhledáván podle aktuálního řádku v jiných listech.

Nyní to mám přes metodu zvolit. Kde ve ZVOLIT mám v index mám načítání buňky M19 a v hodnotách jednotlivé obdobné zvorce, což asi chápete, že je pro funkci zvolit dost náročné, protože tam je dost argumentů a už se mi ty řádky nevlezou do excelového pole pro funkce (prostě mi funkce končí v půlce a dál ji nevidím a scrollovat níž už nejde)citovat
icon #015530
avatar

eLCHa napsal/a:


@AL
Evaluate je fajn, zrovna nedávno jsem ji využil a vlastně ji používáte i vy (zápis [A1] místo Range("A1").value


njn, ja evaluate používam vo VBA, to je pravda, existuje ale i možnosť, ako evaluate použiť v pomenovanom vzorci (cez definované názvy). Pred nejakou dobou som to niekde na LinkedIn zahliadol a prišlo mi to hoodne zaujímavé, bohužiaľ, som ale lempl, tak som si neuložil odkaz a hľadať sa mi to nechce, mám len tušenie, že na riešenie tejto úlohy by sa to dalo použiť..
No a v tomto prípade, Evaluate nie je to samé, čo vo VBA, je to nejaký pozostatok MS Excel 4.0 macrocitovat
#015531
avatar
@AL: Právě jsi mě nakopl nejspíš správným směrem.

Nejspíš myslíš:
http://www.myonlinetraininghub.com/excel-factor-12-secret-evaluate-function

Vyzkouším to podle toho návodu a snad to bude, co hledám ;)citovat
icon #015532
avatar
@MirekCz: jj, presne o tom som hovoril, ale musíš vyskúšať, či je to aplikovateľné.

Každopádne, link ukladám, aby som to zas nemusel hľadať.. 1citovat
icon #015534
eLCHa
Mno a jelikož už jste použili makro - sešit se vás tím pádem bude ptát na povolení maker
pak mi přijde lepší

Function MY_EVALUATE(Formula As String)
MY_EVALUATE = Evaluate(Formula)
End Function

Takže se jedná o tutéž Evaluate ;)

Btw:
něco dělám špatně, pže mi to nefunguje (ale teď nemám moc času se tím zabývat)citovat
icon #015535
avatar

eLCHa napsal/a:


něco dělám špatně, pže mi to nefunguje (ale teď nemám moc času se tím zabývat)


V českom exceli sa to evaluate (v definovanom názve) menuje pochopiteľne inak (nepamätám sa, ako, ani to teraz nedokážem zistiť), nie je to náhodou tým?citovat

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