Funkcí MATCH najdete pozici součástky v seznamu.
Pokud je řada hodnot v oblasti A1:A20 a hledaná hodnota v buňce C1, potom pozici nejbližší najdete výrazem:
=MATCH(MIN(ABS(A1:A20-C1));ABS(A1:A20-C1);0)
(Maticový vzorec, vložit trojhmatem ctrl-shift-enter)
--
Pokud je uvedený výraz v buňce D1 pak příslušnou hodnotu ve sloupci B získáte
=INDEX(A1:B20;D1;2)
(obyčejně)
--
Nebo to co je ve vzorci si rozepište do pomocného sloupce:
Pom. sloupec
=ABS(A1-$C$1)
a zkopírovat dolů.
--
Při vhodném uspořádání můžete dále použít i funkce jako je VLOOKUP, kde hledaný výraz bude
MIN(pom.sloupec) a řazení=0.
Pokud stačí najít největší nižší hodnotu součástky a seznam je setříděný, použijte některou std. vyhledávací funkci s parametrem třídění = 1 (implicitní hodnota).
]]>Dobrý den, potřebuji počítat hodnoty elektrotechnických součástek a podle vypočtených hodnot vybrat vždy ty nejbližší z dané řady. Prosím o radu či nápovědu jak na to, jestli Calc podobnou funkci má nebo jak ji naprogramovat. Děkuji Pavel
Zdravím
Napadl mě možný postup řešení za předpokladu, že řada hodnot ve které hledáme, je vzestupně seřazena:
1. pomocí funkce vlookup najít v řadě nejbližší menší hodnotu
2. pomoci funkce match najít adresu této hodnoty v řadě
3. pomocí funkce offset najít následující hodnotu v řadě
Takže nyní máme 2 hodnoty, ze kterých musíme vybrat tu, která je nejbližší.
4. z těchto 2 hodnot vypočítáme průměr, který porovnáme pomocí funkce if s naší výchozí hodnotou a podle výsledku <= nebo > nám vypadne jen ta nejbližší.
_____________________________________________________________
Značím jako vyřešené
]]>