Zpět na blog
Excel funkce 23. června 2025 8 min čtení

Excelová funkce IFERROR — čistá tabulka i při chybách

Jak používat funkci IFERROR, aby vaše vzorce nikdy nevypisovaly #N/A, #DIV/0! ani jiné chyby. Praktické příklady z reálné praxe včetně VBA.

Chyby jako #N/A nebo #DIV/0! působí v reportu nešikovně a často rozbijí navazující výpočty. IFERROR je jednoduchá obálka, která vám tabulku okamžitě zpřehlední — pokud ji ovšem používáte správně. V tomto článku si projdeme syntaxi, časté scénáře, rozdíl proti IFNA i jak stejnou logiku napsat ve VBA.

Syntaxe a princip

IFERROR má jen dva parametry — vzorec, který chcete vyhodnotit, a hodnotu, která se má vypsat, pokud vzorec spadne na jakoukoliv chybu (#N/A, #DIV/0!, #VALUE!, #REF!, #NAME?, #NUM!, #NULL!).

Základní použitíExcel formula
=IFERROR(vzorec; hodnota_při_chybě)

"tok-c">' Příklad — vrátit text místo #N/A:
=IFERROR(SVYHLEDAT(A2; Cenik; 2; NEPRAVDA); "Nenalezeno")

"tok-c">' Příklad — vrátit prázdný řetězec:
=IFERROR(SVYHLEDAT(A2; Cenik; 2; NEPRAVDA); "")

Ochrana před dělením nulou

Klasický scénář: počítáte podíl a jmenovatel může být nula. Bez IFERROR dostanete #DIV/0!, které rozbije i navazující SUMA nebo PRŮMĚR.

Bezpečné děleníExcel formula
=IFERROR(B2/C2; 0)

"tok-c">' V kombinaci s podmínkou pro lepší čitelnost:
=IF(C2=0; 0; B2/C2)

IFERROR vs. IFNA — rozdíl, který se hodí znát

IFNA reaguje výhradně na chybu #N/A. IFERROR zachytí všechny chyby. U vyhledávacích funkcí často chcete IFNA, abyste si neschovali skutečné problémy v datech (např. #VALUE! ze špatného typu).

Bezpečnější varianta nad SVYHLEDATExcel formula
"tok-c">' Skryje jen 'nenalezeno', ale ne reálnou chybu:
=IFNA(SVYHLEDAT(A2; Cenik; 2; NEPRAVDA); "Nenalezeno")

"tok-c">' Skryje úplně všechno — i opravdové bugy:
=IFERROR(SVYHLEDAT(A2; Cenik; 2; NEPRAVDA); "Nenalezeno")

Časté scénáře z praxe

  • Marže = (Cena − Náklad) / Cena → vždy obalte IFERROR pro případ Cena=0.
  • Převod textu na číslo HODNOTA(A2) → IFERROR(HODNOTA(A2); 0).
  • Vyhledání ID z jiného listu → IFNA(SVYHLEDAT…; "") pro prázdnou buňku.
  • Datum z textového pole → IFERROR(DATUMHODN(A2); "neplatné datum").

IFERROR v Power Query a Power BI

V Power Query existuje obdoba — try ... otherwise. Často přehlednější než vnořené IFERROR.

Power Query alternativaPower Query M
// Bezpečné dělení v Power Query
= Table.AddColumn(
    Source,
    "Marze",
    each try ([Cena] - [Naklad]) / [Cena] otherwise 0
  )

IFERROR ve VBA — On Error Resume Next + IsError

V makru funguje IFERROR jen jako vzorec přes WorksheetFunction. Pro programovou logiku se používá kombinace On Error a kontroly IsError.

Ekvivalent IFERROR v makruVBA
Function BezpecneDeleni(citatel As Double, jmenovatel As Double) As Double
    On Error Resume Next
    BezpecneDeleni = citatel / jmenovatel
    If Err.Number <> 0 Then BezpecneDeleni = 0
    On Error GoTo 0
End Function

Sub PrepocitatMarze()
    Dim r As Long, posledni As Long
    posledni = Cells(Rows.Count, "A").End(xlUp).Row
    For r = 2 To posledni
        "tok-c">' (Cena - Naklad) / Cena, ošetřené proti #DIV/0!
        Cells(r, "D").Value = BezpecneDeleni( _
            Cells(r, "B").Value - Cells(r, "C").Value, _
            Cells(r, "B").Value)
    Next r
End Sub

Kdy IFERROR NEpoužívat

  • Když chcete na chybu opravdu upozornit (validace vstupu od uživatele).
  • Když by skrytí chyby způsobilo nesprávné rozhodnutí (např. nulová marže místo "chybí náklad").
  • Místo opravy datového typu nebo špatné reference — IFERROR neopravuje, jen schovává.

Často kladené dotazy

Jaký je rozdíl mezi IFERROR a IFNA?+

IFNA reaguje pouze na chybu #N/A (typicky z vyhledávacích funkcí). IFERROR zachytí všechny chyby (#N/A, #DIV/0!, #VALUE!, #REF!, #NAME?, #NUM!, #NULL!). Pokud chcete vidět, že máte třeba špatný typ dat, použijte IFNA.

Funguje IFERROR ve všech verzích Excelu?+

Ano, IFERROR je dostupné od Excelu 2007 výše. Ve starších verzích (2003 a níže) musíte použít kombinaci IF + JE.CHYBA (ISERROR).

Zpomalí IFERROR vzorec?+

Při běžném použití je dopad zanedbatelný. U vyhledávacích funkcí nad desítkami tisíc řádků se ale vyplatí přesunout výpočet do Power Query nebo VBA — opakované vyhledávání je dražší než samotné obalení IFERROR.

Jak ošetřit chybu jen u některých typů?+

Použijte konkrétnější funkce: IFNA pro #N/A, JE.CHYBA pro všechny, JE.NEDEF (ISERR) pro všechny chyby kromě #N/A. Kombinací s IF si vyrobíte přesně to chování, které chcete.

Jak IFERROR přepsat do VBA?+

Ve VBA neexistuje přímý ekvivalent. Použijte On Error Resume Next, vyhodnoťte výraz a zkontrolujte Err.Number nebo IsError(). Pak nezapomeňte On Error GoTo 0 pro obnovení standardního zpracování chyb.

Autor

Dušan Kahánek

VBA / Power BI / Microsoft 365 specialista