Výuka a školení Excelu Výuka a školení Excelu Výuka a školení Excelu
Výuka a školení Excelu Výuka a školení Excelu

sobota 30. ledna 2010

Návod pro použití více funkcí IF najednou pro vícenásobný "rozstřel"

Příklad

Potřebuji pomocí funkce IF (česky KDYŽ) určit hodnotu buňky, ale nestačí mě dvě možnosti.
Např. podle hodnoty v buňce A1 potřebuji určit hodnotu buňky A2 - v buňce A1 je určité číslo a v buňce A2 má být napsáno, jestli jde o číslo kladné, záporné nebo o nulu.

Návod

Funkce když umí pracovat pouze tak, že posoudí splnění podmínky a podle splnění nebo nesplnění stanoví hodnotu buňky, neboli "něco napíše". Umí ale pracovat jen se dvěma hodnotami "buď a nebo". My ale potřebujeme tři možnosti - menší než nula, větší než nula a nula.
Využijeme tedy dvě funkce když najednou - vnoříme je do sebe.
Zápis funkce bude vypadat např. takto: =IF(A1>;0;"kladné číslo";IF(A1=0;"nula";"menší než nula"))
-->

Exelu tímto říkám "Jestli je v A1 číslo větší než nula, napiš "kladné číslo". V opačném případě se rozhoduj dále - je-li v A1 nula, napiš "nula". Pokud ani tato podmínka není splněná, napiš "menší než nula".
Poznámky:
  • Všimněte si, že vnořená funkce IF je vlastně parametrem "vnější" funkce IF. Stejným způsobem se mohou kombinovat i mnohé jiné funkce.
  • Dávejte pozor na závorky.
  • Je možné do sebe vnořit až 7 funkcí IF.
  • Více o funkci IF se dočtete zde.
  • Často je možné spletitou kombinaci IF/KDYŽ elegantně a snadno nahradit intervalovým použitím funkce SVYHLEDAT / VLOOKUP.
  • Místo několika funkcí IF/KDYŽ je často vhodnější použít IF/KDYŽ v kombinaci s A/AND a NEBO/OR.

37 komentářů:

  1. Dobrý den, chtěla jsem se zeptat, jestli je ten zápis správně zapsaný. např.: když:A1=120
    =IF(A1>=150;"výborně";IF(A1>=140<150;"dobře";"špatně"

    OdpovědětVymazat
  2. Jde mi hlavně o to A1>=140<150

    OdpovědětVymazat
  3. Dobrý den.
    Chápu to tak, že zadání je takto:

    Pro hodnotu větší nebo rovno 15o je výsledek "výborně"
    Pro hodnotu větší nebo rovno 140 a menší než 150 je výsledek "dobře"
    Pro hodnotu menší než 140 je výsledek "špatně".

    Pak lze zapsat vzorec např. takto:
    =IF(A1>=150;"výborně";IF(A1>=140;"dobře";"špatně"))

    Což se dá lidsky říci asi takto:
    Když je A1 větší nebo rovno než 150, napiš "výborně". Pokud tato podmínka splněná není, jdi na další podmínku - je-li buňka A1 větší nebo rovno než 140, napiš "dobře". Pokud ani tato podmínka není splněná, napiš "špatně".
    Dávejte pozor na znaménka a na závorky.

    Co máte špatně:
    Máte použitou podmínku A1>=140<150 - to nejde, v podmínce lze mít jen jedno znaménko ("<=" a ">=" se bere jako jedno znaménko).
    Na konci vám chybí dva konce závorky.

    OdpovědětVymazat
  4. Jinak alternativně se to dá napsat i s využitím funkce "AND" - ta vrací hodnotu "true" v případě, že jsou splněny obě podmínky.
    Je to sice komplikovanější, ale více to odpovídá logice, ze které jste vycházel(a) vy.
    =IF(A1>=150;"výborně";IF(AND(A1>=140;A1<150);"dobře";"špatně"))

    OdpovědětVymazat
  5. Mockrát děkuji za pomoc!

    OdpovědětVymazat
  6. Musím přiznat, že nás z toho zítra ve škole čeká písemka, takže autorovi patří veliký dík. ;)

    OdpovědětVymazat
  7. Dobrý den,
    potřebuji poradit, jak vytvořit funkci KDYŽ pro tento případ:


    Potřebuji data o počtu obyvatel rozdělit do logických skupin (šesti)

    0-1000 1.sk
    1001-10000 2.sk
    10001-50000 3.sk
    50001-100000 4.sk
    100001-500000 5.sk
    500001 a více 6.sk

    OdpovědětVymazat
  8. KDYŽ(A2<1001;"0-1000";KDYŽ(AND(1000<A2<10001;"1001-10000";KDYŽ(AND(10000<A2<50001;"10001-50000";KDYŽ(AND(50000<A2<100001;"50001-100000";KDYŽ(AND(100000<A2<500001;"100001-500000";"500001 A VÍCE")))))))))

    Zkoušela jsem tam doplnit funkci AND, ale nefunguje to, nevím, kde mám chybu

    OdpovědětVymazat
  9. zkuste to takto:
    =KDYŽ(A2>500000;"500001 A VÍCE";KDYŽ(A2>100000;"10001-500000";KDYŽ(A2>50000;"50001-100000";KDYŽ(A2>10001;"10001-50000";KDYŽ(A2>1001;"1001-10000";"0-1000")))))

    OdpovědětVymazat
  10. Jinak pokud chcete dělit hodnoty do intervalů, můžete zvážit i použití histogramu - může to být celkem elegantní řešení...
    http://support.microsoft.com/kb/214269/cs

    OdpovědětVymazat
  11. Dobry den. Mam na Vas otazku ohladom znamienka "+". Mam zadany vzorec v bunke "A8"-"=SUM(A1:A7)". Potreboval by som ak bude kladna hodnota, aby sa pred tuto hodnotu vlozilo znamienko "+". Ak bude "0" tak bez znamienka a ak bude zaporna hodnota tak "-". Neviem si rady. Za skoru odpoved vopred dakujem.

    OdpovědětVymazat
  12. Dobrý den, lze funkci IF použít i na text?
    Mám v jednom sloupci určitý text (např. ANO, NE, NEVIM) a potřebuji aby v druhem sloupci pokud tam bude Ano tak se sousední řádek obarvil na určitou barvu - obarveni bych připadně dodělal přes podmíněné formátování - stačilo by mi tedy - pokud je v prvnim sloupci ANO napsat do druhého sloupce "-" nebo "1" ... prostě něco co by se dalo podmíněně naformátovat

    OdpovědětVymazat
  13. Jistě, jen je nutné dát odkaz na text do uvozovek. Např.:
    =IF(A1="ano";"x";"y")

    OdpovědětVymazat
  14. Skvělé dekuji moc

    OdpovědětVymazat
  15. Dobrý deň. Poprosil by som radu ako vytvoriť funkciu IF ak mám zadanie -
    Ak bunka A1 obsahuje akékoľvek číslo tak výsledok bude "1", ale ak bunka A1 obsahuje akýkoľvek text tak výsledok bude FALSE resp.0.

    Príklad: A1 = 500 => výsledok "1" ale ak A1 = wa => výsledok "FALSE"

    Ďakujem za pomoc.

    OdpovědětVymazat
  16. Bude to nějak takhle:
    =KDYŽ(JE.ČISLO(A1)=PRAVDA;"číslo";KDYŽ(JE.TEXT(A1)=PRAVDA;"text";"není ani text ani číslo"))

    OdpovědětVymazat
  17. Dobry den, mam takovy dotaz u funkce SVyhledat. Mam velikou tabulku ktera vyhledava ve vice jinych tabulkach. Obcas se stane ze vyhodi hlasku NENI k Dispozici. IFERROR jsem nasel ale nevim jak tyto funkce zkombionovat tak aby bylo misto NENI k dispozici vylednou hodnout idealne 0 nebo prazdna bunka.

    OdpovědětVymazat
  18. Velmi podobný problém je řešený tady:
    http://www.excelentnitriky.com/2012/09/porovnani-dvou-tabulek.html
    Pokud vám to nepomohlo, dejte vědět.
    Hezký den,
    Jiří Beran

    OdpovědětVymazat
  19. Super diky moc za navedeni. Nebylo to presne co jsem potreboval, ale diky tomu me to navedlo a dal jsem to do kupy:).

    Jeste jeden dotaz. Rekneme ze mam na sheetu tabulku, ktera ma pevne dane pole.Meni se pouze vkladane vysledky. Na 1 sheetu je vzdy jedna tabulka. Mam takovych sheetu 49. Existuje nejaka cesta jak udelat na poslednim sheetu prumery vsech sheetu, krome manualni cesty? Nejaky sumarovy sheet, jestli mi rozumite?

    OdpovědětVymazat
  20. Mělo by to být takhle:
    =Průměr(prvnilist:poslednilist!B1)

    OdpovědětVymazat
  21. Nebo ještě jinak takhle:
    http://www.excelentnitriky.com/2013/01/vzorec-pres-vice-listu.html

    OdpovědětVymazat
  22. Tak tady s tim zatim bojuju, je veliky problem pokud se listy jmenuji jinak nez je defaultne nastaveno? Napr. CZ132,CZ063 atp.

    OdpovědětVymazat
  23. Tak k memu poslednimu dotazu, takze samozrejme kdyz udelam co je ve vasem navodu tak to funguje pokud mam zachovane nazvy a poradi listu. Jenze v okamziku kdyz jsem listy prejmenoval a i prohodil jejich poradi tak se mi deje to ze kdyz pak pouziju vzorec pro listy 3 4 a 5 ktere se jmenuji treba CZ003 CZ004 CZ005 tak udelam =SUMA(List3:List5!A1) tak se mi otevre okno pro nalinkovani listu protoze ho nemuze najit...

    OdpovědětVymazat
  24. Rozumím, ale nevím jak to bez makra řešit - prostě ty listy asi nesmíte přejmenovávat.

    OdpovědětVymazat
  25. Dobrý den.

    Prosím o radu. Potřeboval bych vytvořit funkci v buňce C1, kde je B1-A1. Když v buňce C1 je výsledek záporny tak v buňce C1 bude výsledek 0, a když výsledek bude kladný tak v buňce C1 bude konkrétní výsledek.

    Děkuji Píč Martin

    OdpovědětVymazat
  26. Dobrý den,

    chci se zeptat, jak by se udělalo toto:\V buňce H16 použijte databázovou funkci, která zobrazí průměrnou váhu osob vyšších než 180 cm, které bydlí v Praze nebo v Brně.

    Děkuji?l.

    OdpovědětVymazat
  27. Je to funkce AVERAGEIF nebo AVERAGEIFS.

    OdpovědětVymazat
  28. Dobrý den, mám takový problém a nevím si rady. Přes datové nástroje jsem si v excelu vytvořil seznam kde mám tarifní stupně mzdy zaměstnanců, například 1. Tarifní stupeň, 2. Tarifní stupeň atd. A potřeboval bych na to navázat jinou buňku, která by mi podle zadání tarifního stupně vypsala do jiné buňky zadanou částku. Přes funkci KDYŽ se mi to nějak nedaří. Děkuji mockrát za pomoc

    OdpovědětVymazat
  29. Dobrý den,
    možná by se na tohle hodila spíše tato funkce:
    http://www.excelentnitriky.com/2010/02/svyhledat-vvyhledat-vlookup-slookup.html
    Zvláště pokud je tarifních stupňů více.
    Nicméně nejsem schopen takto lépe poradit - pokud chcete, smažte z tabulky citlivá data a pošlete. Mohu Vám s tím pomoci v rámci konzultace:
    http://www.vyuka-excelu.cz/konzultace-excelu/
    Předpokládám, že půjde o jednoduchou věc zdarma nebo za dvě tři stovky - nicméně více Vám řeknu až tabulku uvidím.
    Hezký den,
    J.

    OdpovědětVymazat
  30. můžete mi prosim pomoct potřebuji udělat minimum bez příkazu =min() a musim pouzit příkaz if

    OdpovědětVymazat
  31. můžete mi prosim pomoct potřebuji udělat minimum bez příkazu =min() a musim pouzit příkaz if

    OdpovědětVymazat
  32. Dobrý den, proč potřebujete dělat minimum přes funkci IF když existuje funkce MIN?

    OdpovědětVymazat
  33. Dobrý den, trápím se syntaxí příkladu vícenásobné podmínky. Mám 3 intervaly (0;5000), (5001;10000) a (100001;15000). Pokud číslo v buňce bude vyhovovat prvnímu intervalu, tak jej vynásobit 0,14, pokud druhému, tak 0,16, pokud třetímu, tak 0,18. Mohli byste mi pomoct prosím? Děkuji

    OdpovědětVymazat
  34. Dobrý den, chtěl bych se zeptat, potřebuji v Excelu 2010 udělat toto: Když píšu do Listu 1, chci, aby se to zároveň napsalo do Listu 2? Nepřijde mi to tak těžký, ale nemůžu na to přijít, poradíte prosím? :-)

    OdpovědětVymazat
  35. Takže 9. července jsem sem psal dotaz a dosud nebyl zodpovězen, což je cca měsíc, děkuji, už neodpovídejte. Za takovou dobu bych byl schopen vymyslet sám ten excel :D radíte lidem blbosti, které nefungují, rozumíte excelu asi jako pětilété dítě, nashledanou :-)

    OdpovědětVymazat
  36. Druhý anonymní:
    Jestli rozumím správně, stačí např. do buňky A1 na list2 napsat vzorec =list1!A1
    a vzorec roztáhnout.
    viz např.:
    http://www.excelentnitriky.com/2010/02/propojeni-dvou-listu.html

    OdpovědětVymazat