Přeskočit na obsah

Logické OperátoryVBA

Provede podmíněné vyhodnocení výrazu a vrátí jednu ze dvou hodnot podle výsledku.

Do funkce lze vkládat jakékoliv další VBA nebo Excel funkce pro lepší možnost získání požadovaného výsledku.

IIf(Expression, TruePart, FalsePart)

Expression (povinný) – Logický výraz, který se vyhodnocuje jako True (pravda) nebo False (nepravda).

TruePart (povinný) – Hodnota, která se vrátí, pokud je Expression True.

FalsePart (povinný) – Hodnota, která se vrátí, pokud je Expression False.

result = IIf(5 > 3, „Ano“, „Ne“) – Výsledkem bude „Ano“, jelikož je podmínka splněna.

Použití s ostatními funkcemi

Sekce “Použití s ostatními funkcemi”

result = IIf(Len(Range(„A1“).Value) > 5, „Dlouhý text“, „Krátký text“) – Pokud bude délka hodnoty (např. textového řetězce) v buňce A1, vyšší než 5, bude vrácen text „Dlouhý text“, jinak „Krátky text. Délka je zjištěna pomocí funkce Len.

Převrací logickou hodnotu – pokud je hodnota True, vrátí False a naopak.

Funkce se hodí v případě, kdy je nutné obrátit logiku např. funkce, která vrátí určitý výsledek a je nutné udělat obrácenou logiku. Funkce je často používána s podmínkou If. Pokud mají být použité v podmínkové logice příkazy And, Or, Xor zároveň s Not, je nutné myslet na prioritu vyhodnocování:

  1. Not – Nejvyšší priorita.
  2. And – Vyhodnotí se hned poté.
  3. Or – Vyhodnotí se následně.
  4. Xor – Vyhodnotí se jako poslední

Pokud má být změněno pořadí vyhodnocování, lze vyhodnocovací výrazy zadat do závorek společně s jednotlivými operátory.

Not Expression

Expression – Libovolný logický výraz.

vysledek = Not (5 > 3) – Výsledek bude False, jelikož podmínka je pravdivá, ale díky obrácené logice bude výsledkem False.

Použití s ostatními funkcemi

Sekce “Použití s ostatními funkcemi”

Nejprve je vyhodnocena podmínka v závorkách s argumentem Or, která je vyhodnocena jako „True“, jelikož stačí pouze jedna podmínka aby byla splněna. Následně bude podmínka za „Not“ vyhodnocena jako „False“, jelikož podmínka 7 > 6 je pravdivá, ale kvůli obrácené logice operátoru „not“ se bude jednat o False. Celkovým výsledkem bude „False“, jelikož obě vyhodnocené podmínky musí platit zároveň.

result = Not 7 > 6 And (6 > 7 Or 8 > 7)

Pokud hodnota v buňce A1 nebude prázdná, přičemž zdali je buňka prázdná je zjištěna funkcí IsEmpty, bude výplň buňky naformátována zelenou barvou. Funkce „Not“ je navíc v rámci podmínky If.

If Not IsEmpty(Range(„A1„).Value) then

Range(„A1„).Interior.Color = vbGreen

End If

Pokud se datum nerovná dnešnímu datu zjištěného funkcí Date a zároveň pokud je 7 větší nebo rovna 6, mají se k zadanému datu přidat 2 měsíce pomocí funkce DateAdd. Obě podmínky musí platit zároveň pomocí příkazu And.

If Not („15.11.2025“ = Date) And (7 >= 6) then

DateAdd(„m“, 2, „15.11.2025“)

End If

Operátor vrací True, pokud obě podmínky nebo více podmínek jsou splněny zároveň (True).

Operátor lze využívat několikrát za sebou, tedy není nutné porovnávat pouze 2 podmínky. Výstupem je vždy buďto True nebo False. Výstup může být zapsán do proměnné nebo může být operátor využit v rámci podmínek. Zároveň lze použit i s dalšími logickými operátor jako Or nebo Not. Pokud mají být použité v podmínkové logice příkazy And, Or, Xor zároveň s Not, je nutné myslet na prioritu vyhodnocování:

  1. Not – Nejvyšší priorita.
  2. And – Vyhodnotí se hned poté.
  3. Or – Následné vyhodnocení.
  4. Xor – Vyhodnotí se jako poslední.

Pokud má být změněno pořadí vyhodnocování, lze vyhodnocovací výrazy zadat do závorek společně s jednotlivými operátory.

Expression1 And Expression2

Expression1, Expression2 – Logické výrazy, které se vyhodnocují.

result = (4 > 3) And (7 < 8) – Výstupem bude „True“, jelikož obě podmínky platí zároveň.

result = (2 > 3) And (7 < 8) – Výstupem bude „False“, jelikož platí pouze jedna podmínka a ne obě.

result = (4 > 3) And (7 < 8) And („Text“ = „Text“) – Výstupem bude „True“, jelikož všechny 3 podmínky platí zároveň.

result = (4 > 3) And (7 < 8) And („Text“ = „Ahoj“) – Výstupem bude „False“, jelikož poslední podmínka neplatí, text „Text“ se nerovná textu „Ahoj“.

Použití s ostatními funkcemi

Sekce “Použití s ostatními funkcemi”

Následující příklad se vyhodnotí jako „True“, jelikož operátor Or bude vyhodnocen jako poslední. Nejprve tak budou porovnány první 2 podmínky, jejichž výstup je „False“. Až následně bude „False“ porovnáno s podmínkou za Or, která je pravdivá. Jelikož stačí alespoň jedna pravdivá podmínka, tak výstupem bude „True“

result = 5 > 6 And 6 > 7 Or 8 > 7

Následující příklad bude vyhodnocen jako „False“, jelikož nejprve se vyhodnotí operátor Or, protože je v závorkách (ten je „True“). Následně bude výstup ze závorek porovnán s výrokem před And, který je ale „False“. Jelikož oba výroky musí být pravdivé z důvodu operátoru And, výstupem je „False“.

result = 5 > 6 And (6 > 7 Or 8 > 7)

Pokud bude extrahovaný den funkcí Day z aktuálního data zjištěné funkcí Date větší než 1 a zároveň menší než 5, bude buňka A1 vybarvena zeleně.

If (Day(Date) > 1 And Day(Date) < 5) Then

ws.Range(„A1“).Interior.Color = vbGreen

End If

Pokud bude den extrahovaný pomocí funkce Day z aktuálního data zjištěného funkcí Date vyšší než 1 a zároveň nižší než 5, NEBO pokud bude aktuální měsíc extrahovaný pomocí funkce Month z aktuálního data funkcí Date, tak bude výplň buňky A1naformátována zelenou barvou. Podmínky, které mají platit zároveň, je nutné dát do závorek, aby se nejprve nevyhodnotil příkaz Or.

If (Day(Date) > 1 And Day(Date) < 5) Or (Month(Date) = 12) Then

ws.Range(„A1“).Interior.Color = vbGreen

End If

Operátor vrací True, pokud alespoň jedna podmínka je splněna.

Operátor lze využívat několikrát za sebou, tedy není nutné porovnávat pouze 2 podmínky. Výstupem je vždy buďto True nebo False. Výstup může být zapsán do proměnné nebo může být operátor využit v rámci podmínek. Zároveň lze použit i s dalšími logickými operátor jako And nebo Not. Pokud mají být použité v podmínkové logice příkazy And, Or, Xor zároveň s Not, je nutné myslet na prioritu vyhodnocování:

  1. Not – nejvyšší priorita.
  2. And – vyhodnotí se hned poté.
  3. Or – Následné vyhodnocení.
  4. Xor – Vyhodnotí se jako poslední.

Pokud má být změněno pořadí vyhodnocování, lze vyhodnocovací výrazy zadat do závorek společně s jednotlivými operátory.

Expression1 Or Expression2

Expression1, Expression2 – Logické výrazy, které se vyhodnocují.

result = (4 > 3) Or (9 < 8) – Výstupem bude „True“, jelikož alespoň jedna podmínka je splněna.

result = (2 > 3) Or (9 < 8) – Výstupem bude „False“, jelikož neplatí žádná z podmínek.

result = (4 > 3) Or (7 < 8) Or („Text“ = „Text“) – Výstupem bude „True“, jelikož všechny 3 podmínky platí zároveň.

result = (4 > 3) Or (7 < 8) Or („Text“ = „Ahoj“) – Výstupem bude „True“, jelikož alespoň jedna podmínka je splněna.

Použití s ostatními funkcemi

Sekce “Použití s ostatními funkcemi”

Následující příklad se vyhodnotí jako „True“, jelikož operátor Or bude vyhodnocen jako poslední. Nejprve tak budou porovnány první 2 podmínky mezi And, jejichž výstup je „False“. Až následně bude „False“ porovnáno s podmínkou za Or, která je pravdivá. Jelikož stačí alespoň jedna pravdivá podmínka, tak výstupem bude „True“

result = 5 > 6 And 6 > 7 Or 8 > 7

Následující příklad bude vyhodnocen jako „False“, jelikož nejprve se vyhodnotí operátor Or, protože je v závorkách (ten je „True“). Následně bude výstup ze závorek porovnán s výrokem před And, který je ale „False“. Jelikož oba výroky musí být pravdivé z důvodu operátoru And, výstupem je „False“.

result = 5 > 6 And (6 > 7 Or 8 > 7)

Pokud je aktuální den extrahovaný pomocí funkce Day z aktuálního data zjištěného funkcí Date nižší než 15 nebo buňka A1je prázdná zjištěním pomocí funkce isEmpty, buňka A1 bude vyplněna červenou barvou.

If Day(Date) < 15 Or IsEmpty(Range(„A1„).Value) then

Range(„A1„).Interior.Color = vbRed

End If

Pokud bude den extrahovaný pomocí funkce Day z aktuálního data zjištěného funkcí Date vyšší než 1 a zároveň nižší než 5, NEBO pokud bude aktuální měsíc extrahovaný pomocí funkce Month z aktuálního data funkcí Date, tak bude výplň buňky A1naformátována zelenou barvou. Podmínky, které mají platit zároveň, je nutné dát do závorek, aby se nejprve nevyhodnotil příkaz Or před And.

If (Day(Date) > 1 And Day(Date) < 5) Or (Month(Date) = 12) Then

ws.Range(„A1“).Interior.Color = vbGreen

End If

Operátor vrací True, pokud přesně jedna ze dvou podmínek je pravdivá, ale ne obě.

Operátor lze využívat několikrát za sebou, tedy není nutné porovnávat pouze 2 podmínky. Výstupem je vždy buďto True nebo False. Výstup může být zapsán do proměnné nebo může být operátor využit v rámci podmínek. Zároveň lze použit i s dalšími logickými operátor jako And nebo Not. Pokud mají být použité v podmínkové logice příkazy And, Or, Xor zároveň s Not, je nutné myslet na prioritu vyhodnocování:

  1. Not – nejvyšší priorita.
  2. And – vyhodnotí se hned poté.
  3. Or – Vyhodnotí se následně.
  4. Xor – Vyhodnotí se jako poslední.

Pokud má být změněno pořadí vyhodnocování, lze vyhodnocovací výrazy zadat do závorek společně s jednotlivými operátory.

Expression1 Xor Expression2

Expression1, Expression2 – Logické výrazy, které se vyhodnocují.

result = (4 > 3) Xor (7 < 8) – Výstupem bude „Fsle“, jelikož obě podmínky platí zároveň a ne pouze jedna.

result = (2 > 3) Xor (9 < 8) – Výstupem bude „True“, jelikož platí přesně jedna podmínka.

result = (4 > 3) Xor (7 < 8) Xor („Text“ = „Text“) – Výstupem bude „False“, jelikož všechny 3 podmínky platí zároveň a ne pouze jedna.

Použití s ostatními funkcemi

Sekce “Použití s ostatními funkcemi”

Následující příklad se vyhodnotí jako „True“, jelikož operátor Xor bude vyhodnocen jako poslední. Nejprve tak budou porovnány první 2 podmínky mezi And, jejichž výstup je „False“. Až následně bude „False“ porovnáno s podmínkou za Xor, která je pravdivá. Jelikož je přesně jedna pravdivá podmínka, tak výstupem bude „True“

result = 5 > 6 And 6 > 7 Xor 8 > 7

Následující příklad bude vyhodnocen jako „True“, jelikož nejprve se vyhodnotí operátor Xor, protože je v závorkách (ten je „True“). Následně bude výstup ze závorek porovnán s výrokem před And, který je ale „False“. Jelikož oba výroky musí být pravdivé z důvodu operátoru And, výstupem je „False“.

result = 5 > 6 And (6 > 7 Xor 8 > 7)

Pokud je aktuální den extrahovaný pomocí funkce Day z aktuálního data zjištěného funkcí Date nižší než 15 a buňka A1 nebude prázdná zjištěním pomocí funkce isEmpty, buňka A1 bude vyplněna červenou barvou. Popř. může být den vyšší než 15 ale buňka A1 může být prázdná. Důležité je, aby platila pouze jedna podmínka, aby se příkaz výplně provedl.

If Day(Date) < 15 Xor IsEmpty(Range(„A1„).Value) then

Range(„A1„).Interior.Color = vbRed

End If

Umožňuje vyhodnotit více podmínek a vrátit odpovídající hodnotu první splněné podmínky.

Jednotlivých podmínek může být několik, stejně jako druhů výsledků. Jedná se o podobnou metodu jako If, ElseIf.

Switch(Expression1, Result1, Expression2, Result2, …, ExpressionN, ResultN)

Expression1, Expression2, …, ExpressionN – Podmínky, které se vyhodnocují.

Result1, Result2, …, ResultN – Výsledky odpovídající jednotlivým podmínkám.

result = Switch(5<4, „Splněno1“, 3<4, „Splněno2“) – První podmínka nebude splněna, jelikož není pravdivá. 2. podmínka je pravdivá, takže výstupem do proměnné bude „Splněno2“.

Použití s ostatními funkcemi

Sekce “Použití s ostatními funkcemi”

Zjištění délky hodnoty v buňce A1 pomocí funkce Len. Do proměnné „result“ se následně uloží první splněná podmínka.

result = Switch( _

Len(Range(„A1“).Value) = 0, „Prázdný“, _

Len(Range(„A1“).Value) < 10, „Krátký text“, _

Len(Range(„A1“).Value) >= 10, „Dlouhý text“ _

)

© 2026 Excelland