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

#1 11. 2. 2010 19:27:50

VelkyBubak
Člen
Registrace: 29. 3. 2007
Příspěvků: 15

?Kde je chyba?

Tak nevím jak začít. Právě jsem uložil soubor, kde byla chyba, kterou jsem nemohl najít a chtěl se na ni zeptat tady. Zpětně jsem si soubor otevřel a on PROSÍM fungoval správně!! (To je ale od něj drzost) Vážně nechápu kde byla chyba, ale když jsem opustil OO a znovu jej spustil, chyba odešla do věčných lovišť a od té doby mi to funguje.

I tak. Chyba se projevovala takto:
(soubor http://blok.wu.cz/Dochazka.ods)

Data se mi pomocí maticových vzorců přepisují z listu Plán do listu TýdenníPřepis-polotovar.

Ve sloupci AG najednou data 'zmizí', přestože zpětnou kontrolou částí vzorce k nim přijdu.

Děsím se toho že se zas vrátí - nevíte čím to mohlo být.

Offline

#2 11. 2. 2010 19:58:55

VelkyBubak
Člen
Registrace: 29. 3. 2007
Příspěvků: 15

Re: ?Kde je chyba?

Aha, zajímavé. Pokud si změním v nastavení číslo počátečního dne a změní se mi oblast posunutí v TýdenníPřepis-polotovar, tak mi to v některých sloupcích neukáže data, dokud nerestartuji OO Calc.

Offline

#3 11. 2. 2010 21:12:00

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

Re: ?Kde je chyba?

Nevím kde je chyba, ale pokud jde o vzorce, lze téměř vždy nalézt několik řešení. Vaše nepatří k těm jednoduchým.

Např. list TýdenníPřepis-polotovar

Buňka B5: Vzorec =IF(B$3<>"";""&INDEX(Plán.$B$5:$AF$16;ROW()-ROW(B$4);B$3);"")

stačí. Vzorec lze pak nakopírovat do celé tabulky.

List nastavení:
Např. funkce =WEEKDAY(DATE(_rok_;_měsíc_;1);2) vrátí číslo dne v týdku prvního dne v měsíci

Vzorec =TEXT(DATE(_rok_;_měsíc_;_den_);"ddd") vrátí zkratku příslušného dne v týdnu.
Vzorec =TEXT(DATE(_rok_;_měsíc_;_den_);"mmmm") vrátí jméno měsíce

Pokud chcete první písmena velká, stačí funkce PROPER

Vzorec =DAY(DATE(_rok_;_měsíc_;0)) vrátí počet dnů v příslušném měsíci

Offline

#4 12. 2. 2010 00:41:55

VelkyBubak
Člen
Registrace: 29. 3. 2007
Příspěvků: 15

Re: ?Kde je chyba?

Hm. Zajímavé, určitě se ještě mám co učit.

lp. napsal(a)

=WEEKDAY(DATE(_rok_;_měsíc_;1);2) vrátí číslo dne v týdnu prvního dne v měsíci

=TEXT(DATE(_rok_;_měsíc_;_den_);"ddd") vrátí zkratku příslušného dne v týdnu.

Vzorec =TEXT(DATE(_rok_;_měsíc_;_den_);"mmmm") vrátí jméno měsíce

Pokud chcete první písmena velká, stačí funkce PROPER

funguje

lp. napsal(a)

=DAY(DATE(_rok_;_měsíc_;0))

co mě celkem mate, je že  =DAY(DATE(2010;3;0)) je únor; respektive, sice chápu že 0.3.2010 je vlastně 28.2.2010, ale stejně ... (a s jiným než nultým dnem to pochopitelně takhle nefunguje)

lp. napsal(a)

=IF(B$3<>"";""&INDEX(Plán.$B$5:$AF$16;ROW()-ROW(B$4);B$3);"")

Snažím se to pochopit, ale vzhledem k tomu že to funguje by napohled stačilo toto

=IF(B$3<>"";INDEX(Plán.$B$5:$AF$16;ROW()-ROW(B$4);B$3);"")

Tj. bez ""& před INDEX

INDEX(Plán.$B$5:$AF$16;ROW()-ROW(B$4);B$3) :

Definice oblasti Plán.$B$5:$AF$16
Řádek ROW()-ROW(B$4) ... je ROW(B5)-ROW(B$4), aha pořadí řádku oblasti
sloupec B$3 ... číslo z B$3 ... Udávající zároveň číslo sloupce původní oblasti
Že by průnik oblastí v definičním poli?

Asi chápu wink

Editoval VelkyBubak (12. 2. 2010 02:03:04)

Offline

#5 12. 2. 2010 10:37:02

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

Re: ?Kde je chyba?

VelkyBubak napsal(a)

=DAY(DATE(_rok_;_měsíc_;0))
co mě celkem mate, je že  =DAY(DATE(2010;3;0)) je únor;

Jasně, chyba, má být

=DAY(DATE(_rok_;_měsíc_ + 1;0))
VelkyBubak napsal(a)
lp. napsal(a)

=IF(B$3<>"";""&INDEX(Plán.$B$5:$AF$16;ROW()-ROW(B$4);B$3);"")

Snažím se to pochopit, ale vzhledem k tomu že to funguje by napohled stačilo toto

=IF(B$3<>"";INDEX(Plán.$B$5:$AF$16;ROW()-ROW(B$4);B$3);"")

Tj. bez ""& před INDEX

INDEX(Plán.$B$5:$AF$16;ROW()-ROW(B$4);B$3) :

Ano stačilo, ale funkce INDEX vrací odkaz, a pokud se odkazujete na prázdnou buňku,
dostanete 0.

Protože ze zdrojových dat přenášíte texty, tak tyto nuly ve výstupu ruší. ""&
před INDEX tyto nuly potlačí. Samozřejmě je lze potlačit i jinak.

Editoval lp. (12. 2. 2010 10:37:33)

Offline

Zápatí