Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 16. 1. 2024 06:46:41

lof
Člen
Registrace: 12. 1. 2024
Příspěvků: 3

Jde nějak složit obsah buňky na základě jiných a sebe sama?

Jde nějak složit obsah buňky na základě jiných a sebe sama?

A1 = "X"
B2 = -10
B3 = 0
B4 = 10

Potřebuji, aby se mi v A2..A4 zobrazovaly složeniny na základě těchto buněk a obsahu sama sebe.

Tj. (v pseudozápise):

An = A1 & IF(Bn>0;"P";IF(Bn<0;"M";"Z")) & self()

Když do A2 vložím 3, tak se mi ale zobrazí "XM3"
Když do A3 vložím 5, tak se mi ale zobrazí "XZ5"
Když do A4 vložím 7, tak se mi ale zobrazí "XP7"

A navíc, když potom třeba v buňce F2 udělám prostý odkaz (=A2), tak aby se mi v F2 zobrazilo "XM3" (a podobně u následujících)

Děkuji.

Offline

#2 16. 1. 2024 17:59:46

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,468

Re: Jde nějak složit obsah buňky na základě jiných a sebe sama?

Zdravím.
     Skouknul jsem Váš první dotaz Podmíněný součet vzorců, ale ne odkazů a už z nadpisu mne napadlo kde je chyba zadání.
     Neco podobného se objevuje také v tomto Vašem druhém dotazu. Práce s maticemi je poněkud odlišná od teorie matic. Matice se vytvářejí obvykle z více, či méně jednoduchých základních vzorců. Aktivují se Shift+CTRL+Enter. Existují ale příklady, které sám nedovodíte. Mnoho takových vzorů můžete najít v historii tohoto fóra.
     Já jsem si udělal určitý výpis zajímavých případů zejména pro množinové operace a jiné. Nejčastěji používám z okna výběru funkce zaškrtnutý CheckBox "matice", kde se už nemusí trojstiskem matice aktivovat.


     Popravdě si nevím rady s Vámi provedeným popisem. Například

An = A1 & IF(Bn>0;"P";IF(Bn<0;"M";"Z")) & self()"

Co znamená An, to "n" je algebraický výraz pro počet "n", nebo je to obecný znak příslušný k řádku? Tedy ve 3. řádku je n=3? ap.
     Také konstrukce A1 & něco vytvoří textový řetězec a i když IF zafunguje vybere správný ze tří možných stavů, tak závěrečné & self() vypadá jako naprogramovaná funkce (kterou si vysvětluji jako "Já - jako můj zásah".


     Tohle vyžaduje dobrý vzor s popisem jak by to mělo vypadat v zadání (což sice popisujete), ale už nevyčtu co, nebo jak by to mělo být správně. Já velmi často stavím náročné vzorce s mnoha proměnnými pomocí textových funkcí, které aktivuji naráz například jako rozsáhlý sloupec, nebo řádek. Mnohdy mají vzorce opravdu velký strom podmínek. Nejčastěji používám funkci IFS() - například Věše konstrukce se dá přeskládat na =IFS(Bn>0;"P";Bn<0;"M";Bn=0;"Z"). Jde jen o správně umístění podle důležitosti.


     Ještě ze zkušenosti musím upozornit, že Calc je aritmetický univerzál, ale není to algebraický speciál. Nevím jak je to důležité z pohledu cíle - výsledku, ani netuším, jak je zadání fundované. Pokud potřebujete dobrou odpověď, musíte triviálně objasnit co a někdy i proč. Pokud máte pochybnosti o důvěryhodnosti veřejného postnutí, postněte mi příklad na Gmail níže uvedený, ale napište mi to sem. Na stroji který tímto emailem disponuje pracuji běžně OFFLINE a je zapnutý od rána do večera, takže musím nastavit přerušení a stáhnout si to.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 16. 1. 2024 23:00:50

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 844

Re: Jde nějak složit obsah buňky na základě jiných a sebe sama?

Jednoduchá odpověď : Částečně, ale nedělal bych to.

Nejprve je nutné si uvědomit, že do buňky můžeme zadat buď číslo nebo vzorec. Tj. pokud zadáte hodnotu, tak si výpočet vymažete.

Tedy pokud hodnotu chcete zadávat, lze napsat něco jako: =if(c1="vzorec"; A1 & IF(Bn>0;"P";IF(Bn<0;"M";"Z")) & self(); 3)   --- 3 je zadané číslo, tj. zadává se do vzorce, v c1 je přepínač, umožní zadat hodnotu, případně může hodnoty zresetovat)

Dále. Pokud se chcete odkazovat na vlastní hodnotu, je nutné povolit iterace. Doporučuji současně nastavit počet iterací na 1 a nastavit manuální přepočet. Tak bude možné tu obludu krokovat.

Dál je nutné vyřešit, jak při aktualizaci zachovat původní hodnotu (nejspíš přes pomocnou buňku/buňky)
a nějak nastavit stopku, aby se řetězec nechtěně nerostl.

Dál už se mi to nechce vymýšlet. Základ máte, část problémů lze řešit přes zamknutý řetěz pomocných buněk, ale to už je docela alchymie.

Offline

Zápatí