Vzorce v tabulkách ¶
Vzorce v tabulkách Markdown ¶
Jednou z nejzajímavějších funkcí, které tato knihovna přidává (podle mého názoru), jsou vzorce. Formát těchto vzorců je velmi podobný formátu používanému v org-mode , i když není tak výkonný.
Stručný přehled funkcí: ¶
Zkopírujte hodnoty z jedné buňky, řádku, sloupce nebo rozsahu do jiné
Sečíst hodnoty ze sloupce nebo rozsahu
Průměrné (průměrné) hodnoty ze sloupce nebo rozsahu
Srovnání hodnot
Algebraické operace
Struktura vzorce - Přehled
Pojďme si napsat příklad vzorce a seznámit se se strukturou, než se dozvíme podrobnosti o jakékoli specifické funkci.
Item | Grams |
---|---|
Whole Wheat Flour | 110 |
Bread Flour | 748 |
Warm Water | 691 |
Salt | 18 |
Starter | 40 |
Total Grams |
Vzorce se do tabulek přidávají jako komentář HTML přímo za tabulkou. Formát je konec. Všimněte si, že mezi pomlčkami a vnitřními částmi vzorce je mezera.
Dále označíme, že tento komentář obsahuje vzorec s TBLFM: . Znovu si všimněte koncové mezery. Komponenty dosud budou existovat beze změny pro každý vzorec, který napíšete.
Zdroj a Cíl
Nyní se dostáváme k dynamické části vzorce. Jakýkoli vzorec můžete rozdělit na dvě poloviny: kde načíst data a kam uložit výsledek.
V tomto vzorci tedy načítáme data z sum(@I..@-1)a ukládáme je do @>$2.
Řádky a sloupce
Stejně jako v organizačním režimu vzorce používají k označení řádků a sloupců symboly. Ve výše uvedeném vzorci je cíl pro naši vypočítanou hodnotu @>$2. Můžeme to rozdělit na @>a $2, což znamená „poslední řádek“ a „sloupec 2“. Za chvíli se vrhneme na to, co znamená „poslední řada“.
Podívejme se na zdroj: sum(@I..@-1). Opět, pokud budeme ignorovat některé z konceptů, které jsme se ještě nenaučili, můžeme zde identifikovat několik řádků: @I a @-1jsou oba řádky
Kromě použití čísla k odkazování na konkrétní řádky a sloupce (označované jako absolutní řádky nebo absolutní sloupce) lze symboly použít k dynamickému odkazování na části tabulky.
@<a $<znamenají první řádek a první sloupec.
@>a $>znamenají poslední řádek a poslední sloupec.
@Iodkazuje na čáru oddělující záhlaví tabulky od těla tabulky.
Řádky a sloupce lze také odkazovat ve vztahu k aktuální vyplněné buňce. Například @-1znamená „stejný sloupec, o jeden řádek výše“ a $+2 znamenalo by „stejný řádek, dva sloupce vpravo“.
Pokud je při psaní odkazu na buňku vynechána část řádku nebo sloupce, znamená to „v aktuálním řádku“ nebo „v aktuálním sloupci“. V našem příkladu @Ia @-1oba jsme vynechali sloupec, takže tyto odkazy jsou pro stejný sloupec jako cílová buňka.
Rozsahy
Když píšete @2sám o sobě, znamená to doslova "řádek 2", stejně jako celý řádek. Podobně @2$4to znamená jednu buňku v řádku 2, sloupci 4. Co když však chcete odkazovat pouze na několik buněk v jednom sloupci nebo možná na několik buněk v několika po sobě jdoucích sloupcích?
Rozsahy to umožňují. Rozsah je označen dvěma tečkami v řadě mezi dvěma řádky a/nebo sloupci.
@I..@-1
Náš příklad shora říká "Od řádku za záhlavím v aktuálním sloupci k řádku nad tímto v posledním sloupci."
Funkce ¶
Poslední částí našeho příkladu je volání funkce.
V tomto příkladu používáme sumfunkci a předáváme jí rozsah popsaný výše jako vstupní data. Podrobnosti o tom, jak sumfunguje, budou diskutovány později v tomto dokumentu, ale nyní můžeme říci, že to sčítá poskytnutá vstupní data a poskytuje jedinou buňku jako výstup.
Výsledek
Tím rozumíme všem složkám vzoru příkladu. Sečte čísla z druhého sloupce, kromě záhlaví a posledního řádku, a umístí výsledek do posledního řádku.
Komponenty formule
Tato část se bude věnovat dalším podrobnostem o různých složkách, které lze ve vzorci použít. Některé podrobnosti se budou opakovat z výše uvedené části přehledu.
Odkazy na buňky a řádky
Řádky jsou vždy označeny @a sloupce $. Řádky a sloupce lze zadat jako absolutní hodnoty nebo relativní.
@1znamená první řádek a @5znamená 5. řádek shora.
$1znamená první sloupec a $5znamená 5. sloupec zleva.
@<a $<znamenají první řádek a první sloupec.
@>a $>znamenají poslední řádek a poslední sloupec.
@Iodkazuje na první řádek obsahu pod záhlavím.
@-1znamená řádek nad vyplněnou buňkou.
$+2znamená sloupec dva vpravo od vyplněné buňky.
Řádek nebo sloupec lze zadat samostatně nebo společně v kombinaci. Například @5znamená 5. řádek v aktuálním sloupci. Podobně $5 znamená 5. sloupec v aktuálním řádku. Při společném použití označují jednu buňku.
Při společném použití by měl řádek vždy předcházet sloupci.
Rozsahy
S pouhými řádky a sloupci je vzorec omezen na výběr jednotlivých buněk nebo celých řádků a sloupců. Pomocí rozsahu může vzorec vybrat částečné řádky/sloupce i více řádků/sloupců.
Rozsahy se vytvářejí s řádkem a/nebo sloupcem, dvěma tečkami a dalším řádkem a/nebo sloupcem. Například @1..@3. Pamatujte však, že součásti na obou stranách se musí shodovat. Rozsah nemůže být z řádku do sloupce nebo z buňky do řádku.
@2..$4- Neplatné, nemůže být v rozsahu od řádku do sloupce.
@2$3..@5- Platí, pokud sloupec existuje v prvním termínu a nikoli v druhém, přenese se do druhého.
@2$3..@5$5- Platí, z jedné buňky do druhé.
$4..$6- Platí, z jednoho sloupce do druhého.
Rozsahy lze použít k výběru částí řádku nebo sloupce.
@2$>..@5$>- Poslední sloupec, od řádku 2 do řádku 5. Arity4x1
@3$<..@3$5- Třetí řádek, od prvního sloupce po 5. Arity1x5
Rozsahy lze také použít k výběru více než řádku nebo sloupce.
@<..@>- Celý řádek od prvního řádku po poslední (celá tabulka).
@3$1..@4$3- Od řádku 3 do řádku 4, od sloupce 1 do 3. Arity2x3
Algebraické operace
Vzorce lze použít k sčítání, odečítání, násobení a dělení hodnot v tabulce. Všechny algebraické operace musí být obsaženy v závorkách.
Přidat
Při přidávání musí být alespoň jedna ze zadaných hodnot jedna buňka. Vzorec nesmí přidat jeden rozsah k jinému rozsahu.
(@2$3+@3$4)- Platné, přidání dvou buněk.
(@2+@3$4)- Platné, přidejte hodnotu na druhém řádku aktuální buňky do buňky @3$4.
(@2$3+$4)- Platné, přidejte hodnotu v @2$3 k hodnotě v aktuálním řádku, sloupci $4.
(@2+@3)- Platné, přidejte hodnotu v aktuálním sloupci řádku 2 k aktuálnímu sloupci řádku 3.
@2$3+$4- Neplatná, chybějící závorka.
Přidat příklad
V této tabulce začal pravý sloupec vypadat stejně jako levý, přičemž byly vyplněny pouze první dvě hodnoty. Vzorec vyplní poslední sloupec od řádku 4 do posledního řádku. Pro každý řádek přidá hodnotu předchozích dvou řádků. Můžete to znát jako Fibonacciho sekvenci
| Start | Fibonacci |
|-------+|-----------|
| 1 | 1 |
| 1 | 1 |
| | 2 |
| | 3 |
| | 5 |
| | 8 |
| | 13 |
| | 21 |
Odčítat
Odečítání vyžaduje, aby druhý operand byl jedinou buňkou. První operand může být rozsah nebo buňka.
(@2$3-@3$4)- Platí, odečtěte dvě buňky.
(@2-@3$4)- Platné, odečtěte jednu buňku od každé hodnoty v řádku.
(@3$4-@2)- Platné, hodnota na druhém řádku aktuálního sloupce od @3$4.
@2-@3$4- Neplatná, chybějící závorka.
Odečíst Příklad
V tomto příkladu odečítáme hodnotu v řádku tři (4, 5, 6) od hodnoty v @2$3 (3). Všimněte si, jak každý výsledek (-1, -2, -3) odečetl hodnotu v odpovídající buňce řádku tři.
| One | Two | Three |
|-----+|-----+|-------|
| 1 | 2 | 3 |
| 4 | 5 | 6 |
| -1 | -2 | -3 |
Násobit
Násobení vyžaduje, aby alespoň jedna hodnota byla jedna buňka. Vzorec nesmí násobit jeden rozsah jiným rozsahem.
(@2$3*@3$4)- Platné, násobení dvou buněk.
(@2*@3$4)- Platí, vynásobte jednu buňku aktuálním sloupcem v řádku 2.
(@2$3*$4)- Platí, vynásobte jednu buňku aktuálním řádkem ve sloupci 4.
(@2*@3)- Platí, vynásobte aktuální sloupec v řádku 2 aktuálním sloupcem v řádku 3.
(@2..@3*@2$4..@4$4)- Neplatné, oba operandy jsou rozsahy.
@2$3*$4- Neplatná, chybějící závorka.
Rozdělit
Dělení vyžaduje, aby druhý operand byl jedinou buňkou. První operand může být rozsah nebo buňka.
(@2$3/@3$4)- Platí, rozděl dvě buňky.
(@2/@3$4)- Platné, vydělte každou hodnotu v řádku jednou buňkou s.
(@3$4/@2)- Platí, vydělte jednu buňku aktuálním sloupcem v řádku 2.
(@3$4/@2..@3)- Neplatné, nelze dělit jednu buňku rozsahem.
@2/@3$4- Neplatná, chybějící závorka.
Podmíněné operace
Podmínky umožňují volbu hodnoty na základě porovnání dvou vstupů. Například:
if(@3$4<@4$5, @2, @3)
V tomto příkladu porovnáváme hodnoty umístěné v buňce @3$4proti buňce @4$5. Pokud je první menší než ( <) druhý, pak bude výsledkem první parametr ( @2), jinak bude výsledkem druhý parametr ( @3).
Porovnání lze provádět pouze mezi buňkami, nikoli mezi rozsahy.
Porovnávací operátory
<- Méně než
- Větší než
<=- Menší nebo rovno
=- Větší nebo rovno
==- Rovnat se
!=- Nerovná se
Podmíněný příklad
Tato podmíněná operace nastavuje hodnoty v posledním sloupci (kromě záhlaví). U každého řádku kontroluje, zda je první sloupec větší než tři. Pokud ano, tato hodnota se zapíše do posledního sloupce, jinak se do posledního sloupce zapíše hodnota tři.
Jinými slovy, tato funkce nastaví poslední sloupec na vyšší hodnotu z prvního sloupce a tří.
| One | Two | Three |
|-----±----±------|
| 1 | 2 | 3 |
| 4 | 5 | 4 |
| -1 | -2 | 3 |
#+TBLFM: $>=if($1>3, $1, 3)
Funkce
Funkce vypadají velmi podobně jako podmíněné operace. Klíčové slovo následované závorkou s hodnotami uvnitř. Například, mean(@3$<..@3$4). Volání funkce předá data z poskytnutého rozsahu, buňky, řádku nebo sloupce, poté provede výpočet a poskytne zpět výsledek.
Existují dvě funkce, které lze použít:
součet
sumje velmi podobná výše uvedené algebraické operaci sčítání, ale sečte všechny buňky v zadaném rozsahu, řádku nebo sloupci dohromady a vydá výsledek s jedinou buňkou.
| One | Two | Three |
|-----------±----±------|
| 1 | 2 | |
| 4 | 5 | |
| Total | | 12 |
znamenat
meanvypočítá průměr poskytnutého rozsahu, řádku nebo sloupce. Jako by sumto vydalo výsledek jedné buňky.
Hnízdění
Různé stavební bloky funkce mohou být vnořeny, pokud se jejich arita shoduje. Výstup z sumlze například použít jako vstup pro podmíněnou operaci. Zde je několik příkladů platného vnoření:
Řetězení a více vzorců
Tabulka může mít definováno více vzorců. To lze provést dvěma způsoby. V jednom řádku vzorců může být více vzorců "zřetězeno" dohromady, oddělených ::. Například:
Při řetězení budou vzorce vyhodnoceny zleva doprava. Výsledná tabulka po použití prvního vzorce bude použita jako vstup pro druhý vzorec. To znamená, že druhý vzorec může pracovat s vypočítanými hodnotami z prvního vzorce.
Druhý způsob je s více řádky vzorců.
Tato metoda je ekvivalentní řetězení. Řádky vzorců budou vyhodnoceny shora dolů. Stejně jako při řetězení je výstupní tabulka po jednom vzorci předána jako vstup do dalšího.
Tyto metody lze kombinovat.
Možnosti formátování
Volitelně můžete požádat o výstup výsledku s určitým počtem desetinných míst pomocí formátovací direktivy. Například:
A | B | C | D |
---|---|---|---|
1 | 2 | 5 | 6 |
3 | 4 | 7 | 8 |
V tomto příkladu je direktiva formátování ;%.2fna konci. Bez toho by výsledky byly hodnoty jako 0.14285714285714285, ale protože jsme požadovali 2desetinné čárky, výsledky budou místo toho 0.14.
Můžete také vypsat výsledek jako datum a čas s ;dtdirektivou formátování. V tomto příkladu vezmeme datum a čas a přidáme 600 000 milisekund, pak výsledek vypíšeme jako datum a čas.
Start | Ms | End |
---|---|---|
2023-07-12 10:00 | 600000 | 2023-07-12 10:10 |
Časy a trvání
Existuje velmi základní podpora pro práci s časy v tabulkách.
Časy jsou vždy reprezentovány buď jako řetězec data a času (2022-12-31 23:59), nebo jako milisekundy od epochy (1672559940000). Při provozu s dobami trvání musí být vyjádřeny v milisekundách.
Můžeme například odečíst čas ukončení od času zahájení a zobrazit dobu trvání v minutách:
Start | End | Ms | Min |
---|---|---|---|
2023-07-12 10:00 | 2023-07-12 10:10 | 600000 | 10 |