V MS Excel je možné programovat vlastní uživatelské funkce bez použití VBA kódu. To je umožněno díky LAMBDA funkci.
V MS Excelu musíme mnohdy použít složité vzorce. Práci s dlouhými vzorci může zefektivnit použití LAMBDA funkce. Ta umožňuje funkci nadefinovat a pak efektivně v buňkách volat. Využití lambda funkce je možné demonstrovat na výpočtu objemu koule. Vzorec 4/3*PI()*r^3 je pro opakované použití složitý a zadává se velmi nešikovně. Místo toho by bylo mnohem vhodnější vytvořit vlastní funkci s názvem Objem_koule s jediným argumentem r.
Funkci vytvoříme s použitím Správce názvů nebo příkazu Definovat název.
Do dialogového okna ve správě názvů se zadá Název funkce, případně komentář a do spodní části samotná definice funkce.
Funkce LAMBDA se skládá z těchto částí:
- název proměnné (r)
- vzorec (4/3*PI()*r^3)
Výsledný zápis vypadá takto:
=LAMBDA(r;4/3*PI()*r^3)
V buňce je pak možné funkci Objem_koule použít.
pozn. Pro porovnání je vidět i výsledek zadaný „klasicky“ =4/3*PI()*C2^3
Použití LAMBDA funkce v MS Excelu může být výhodné z několika důvodů:
- Čitelnost a přehlednost
- Opakovatelnost: Pokud budete potřebovat výpočet objemu koule opakovaně na různých místech v Excelu, můžete použít lambda funkci a znovu ji využít, aniž byste museli opakovat stejný výpočet v různých buňkách.
- Snadná úprava a údržba: Lambda funkce můžete snadno upravovat a aktualizovat
- Modularita: Lambda funkce umožňují rozdělit složitější výpočty na menší části, což umožňuje lépe spravovat jednotlivé části výpočtu.
- Dostupnost pro sdílení: Pokud sdílíte Excelový dokument s ostatními, lambda funkce umožňují sdílet definici funkce, což může usnadnit spolupráci a snížit riziko chyb.
Ukázkou použití 2 sloupců jako argumentů vlastní funkce může být výpočet Váženého průměru.
Použití LAMBDA funkce zadání v buňce výrazně zjednodušuje.
Definování funkce vypadá takto:
Argumenty funkce jsou: hodnoty a váhy
Výpočet: =SOUČIN.SKALÁRNÍ(hodnoty;vahy)/SUMA(vahy)
Celkově vypadá funkce takto:
=LAMBDA(hodnoty;vahy;SOUČIN.SKALÁRNÍ(hodnoty;vahy)/SUMA(vahy))
Výsledek vypadá takto: