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

#1 23. 2. 2010 16:09:36

P1784
Člen
Registrace: 23. 2. 2010
Příspěvků: 1

Automat vyplň dalších buněk na základě info z jedné buňky

Dobrý den,

potřeboval bych pomoci s tabulkou. Jde o to že když napíšu číslo do jedný buňky, aby se mi na základě nějaké databáze vyplnilo dalších pět buněk dle té mé databáze.

Díky

Offline

#2 23. 2. 2010 20:41:55

Ondra.kl
Člen
Registrace: 30. 9. 2008
Příspěvků: 933

Re: Automat vyplň dalších buněk na základě info z jedné buňky

funkce VLOOKUP

Offline

#3 19. 3. 2010 11:55:40

dech
Člen
Registrace: 1. 10. 2008
Příspěvků: 150

Re: Automat vyplň dalších buněk na základě info z jedné buňky

Ahojte,
zajímalo by mě jestli jde v kombinaci s fci VLOOKUP  používat logické operátory. Zkoušel jsem to, ale neúspěšně:
3-A, 7-B,20-C je matice. <6 je vyhledávací kritérium.  zluté pole je výsledek (fce vlookup)
20100319114024.png

Editoval dech (19. 3. 2010 11:55:56)


LO 6.1.2.1. (x64)  WIn 8 64bit  16GB RAM

Offline

#4 19. 3. 2010 14:10:42

hanus
Člen
Místo Olomouc
Registrace: 29. 11. 2006
Příspěvků: 573
Web

Re: Automat vyplň dalších buněk na základě info z jedné buňky

Nepochopil jsem účel/cíl tohoto cvičení. Jaký je vzorec v té žluté buňce a co má dělat?

Offline

#5 19. 3. 2010 14:36:41

dech
Člen
Registrace: 1. 10. 2008
Příspěvků: 150

Re: Automat vyplň dalších buněk na základě info z jedné buňky

Cetl jsem v napovede o vlookup ze podporuje regulární výrazy. A tak by me zajímalo jestl i kromě regulárních výrazů podporuje i hledání podle logických operátorů.
Kdyz zadám  <6  do zeleneho pole,tak aby to vyhodilo odpovidajici pismenko v zlutem poli = A.  Pokud bych zadal do zelenho pole >10 tak to vyhodí C. Samozrejme problem nastane pokud budu chtit hledat <30 - to by mohlo odpovidat C i B i A.

Nebo druhý způsob:
20100319143332.png
a ve žlutém poli by mělo vyjít "B".

Nevim jestli nějak nezadávám špatně ty operátory...kdoví jestli vlookup s logickými oper. vůbec funguje...

nj...já se vlastně pokouším udělat něco co už funguje jako fce IF...tak radši už nic smile

Editoval dech (19. 3. 2010 14:38:00)


LO 6.1.2.1. (x64)  WIn 8 64bit  16GB RAM

Offline

#6 19. 3. 2010 15:10:20

hanus
Člen
Místo Olomouc
Registrace: 29. 11. 2006
Příspěvků: 573
Web

Re: Automat vyplň dalších buněk na základě info z jedné buňky

technická pozn.: podle mě jsou < a > relační oparátory, logické jsou AND, OR, NOT, XOR

Toto VLOOKUP nepodporuje, jeho účel je jiný, ačkoliv trošku ano - když použijete v případě toho prvního obrázku vzorec
=VLOOKUP(6;C1:D3;2)
a data ve sloupci C budou seřazena vzestupně, pak výsledkem bude A
=VLOOKUP(8;C1:D3;2)
bude B. Jak to? Ve VLOOKUP zde není použit poslední parametr Řazení, nehledá se tudíž přesně, ale přibližně :-)

To, co chcete vy, toho lze taky dosáhnout, ale ne jen s pomocí VLOOKUP. Nejsem si jist, zda toho půjde dosáhnout jedním vzorcem, možná maticovým - zde snad poradí lp. :-)

PS: regulární výrazy jsou určeny pro práci s textem/řetězci, neumějí provádět matematické oparace kterými < a > jsou

Editoval hanus (19. 3. 2010 15:11:38)

Offline

#7 19. 3. 2010 15:13:08

dech
Člen
Registrace: 1. 10. 2008
Příspěvků: 150

Re: Automat vyplň dalších buněk na základě info z jedné buňky

diky, jsem poučen smile


LO 6.1.2.1. (x64)  WIn 8 64bit  16GB RAM

Offline

#8 19. 3. 2010 18:31:15

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

Re: Automat vyplň dalších buněk na základě info z jedné buňky

Nevím, jestli dotaz chápu dobře. Pokud potřebuji najít něco složitějším způsobem než je jen porovnání v nějakém vektoru, nejobecnější je asi použití funkce index. Funkce umí vybírat v zadané oblasti prvek s určenými souřadnicemi. Jde tedy jen o to, jak spočítat souřadnice vybraného prvku.

Pro výpočet souřadnic lze (obecně) použít maticovou konstrukci ve tvaru

{=min(if(a1:a50>x ... ;row(a1:a50);1000000))}

Kde podmínka může být docela složitá. Konstrukce vrátí číslo prvního řádku, ve kterém je splněna podmínka. Toto číslo se potom jednoduše převede na koordinátu potřebnou pro index.

Někdy se dá obecná konstrukce nahradit funkcí match.

Místo row se někdy hodí column. Místo min se dá použít max (poslední výskyt), nebo obecně large nebo small, které umí najít i další výskyty podmínky. Číslo na konci konstrukce se bude lišit podle použité funkce, může dávat adresu buňky s hlášením chyby, ukazovat mimo oblast (index vrátí chybu)...

Offline

#9 20. 3. 2010 20:28:46

hanus
Člen
Místo Olomouc
Registrace: 29. 11. 2006
Příspěvků: 573
Web

Re: Automat vyplň dalších buněk na základě info z jedné buňky

Takže lp. to zase jen naťuknul, takže dokončím - když vyjdu z prvního obrázku, kde čísla jsou řekněmě v C1:C3 a písmenka v D1:D3, tak do žluté buňky vložte
=INDEX(C1:D3;MIN(IF(C1:C3>10;ROW(C1:C3);C4));2)
a vkládání ukončete pomocí CTRL+SHIFT+ENTER, čímž to vložíte jako maticový vzorec, což bude zapsáno jako
{=INDEX(C1:D3;MIN(IF(C1:C3>10;ROW(C1:C3);C4));2)}
a výsledkem bude C - číslo 20>10 a vedle 20 je C

Data ale musí začínat na 1.řádku, jinak to nebude fungovat správně, protože ROW pracuje s absolutními řádky, kdežto INDEX s relativními - musel by se doplnit řádkový offset (posun).
Další nevýhoda toho vzorce je, že čísla ve sl.C musí být seřazena.

Marně hledám funkci, která by umožnila konstruovat výpočet odkazem na text v nějaké buňce - že byste do jiné buňky zadal "<10" nebo ">6" a jiný vzorec by s tím uměl počítat.

Nicméně výše uvedený vzorec neřeší problém, když - jak uvádíte - zadáte podmínku např. <30, což jsou všechna ta čísla. Záleží teda čeho chcete dosáhnout. Řešením by pak mohl být pomocný sloupec pro každý řádek zvlášť, např.
=IF(C2>10;D2;"")
a pak by se výsledky vyhodnotily v závislosti na tom, čeho chcete dosáhnout, třeba načítat do řetězce, takže výsledek by byl např. "ABC", nebo "AC" atp. vizte např.
http://ooo.e-hanus.cz/postupne_vyhodnoceni.01.ods

Editoval hanus (20. 3. 2010 20:29:31)

Offline

#10 21. 3. 2010 19:52:23

dech
Člen
Registrace: 1. 10. 2008
Příspěvků: 150

Re: Automat vyplň dalších buněk na základě info z jedné buňky

no krásná tabulka, jak jsem výše psal-snažil jsem se udělat něco co se dá udělat s fcí IF. Každopádně jsem zase o nějakou informaci bohatší a časem se to určitě sejde. diky


LO 6.1.2.1. (x64)  WIn 8 64bit  16GB RAM

Offline

#11 22. 3. 2010 00:21:27

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

Re: Automat vyplň dalších buněk na základě info z jedné buňky

Pokud chcete vypsat více hodnot, zkuste do tabulky od Hanuse vložit maticový vzorec

{=VLOOKUP(IF($A$2:$A$8>6;$A$2:$A$8;MAX($A$2:$A$8)+1);$A$2:$B$8;2;0)}

(Obočka - Můžete zkusit zadat také třeba
{=VLOOKUP(13;$A$2:$E$8;{2;4;5};0)}
nebo
{=VLOOKUP(13;$A$2:$E$8;{2|4|5};0)}
může se to hodit, pokud potřebuje duplikovat část velké tabulky a mnoho hledání zdržuje.)

Chyby ve výpisu mohou trochu vadit. Řeší to funkce small:
{=INDEX($C$1:$D$3;SMALL(IF($C$1:$C$3>10;ROW($C$1:$C$3);ROW($C$4)); ROW(A1));2)}

(Zase jsem přeskočil do obecnějšího řešení.) Vzorec se nakopíruje do buněk pod sebe. Každý řádek vybere jednu hodnotu odpovídající podmínce. Chyby na konci seznamu lze ošetřit obalením vzorce podmínkou (pomocí countif se spočítá počet možných odpovědí a pro nadbytečné řádky něco vnutíme - třeba "")

Původní představa s vypsáním části vzorce a řešením, lze také řešit, jedná se o poměrně složité obalení předchozích vzorců typu if(left(a1;2)="<="; ... value(mid(a1;3; ..

Jinou alterntivou může být vlastní makro funkce, něco jako =EVALUATE("vzorec"), která vrátí hodnotu vzorce. (V calcu je skoro vždy více možností, jak problém řešit)

Offline

Zápatí