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

#1 11. 11. 2011 19:27:05

tkus
Člen
Místo Šternberk
Registrace: 11. 11. 2011
Příspěvků: 3

Pokročilé adresování buněk - VYŘEŠENO

Před časem jsem pod článek "Pokročilé adresování buněk v Calcu" položil tento dotaz:
Mám ve sloupci A na každém řádku název listu (např. A2=List1). V dalších sloupcích chci zobrazovat hodnoty buněk z různých listů. Například ve sloupci B chci zobrazit obsah buňky C5 z různých listů podle sloupce A. Ručně tedy napíšu do B2=List1.C5. Pokud však takto zapsaný vzorec rozkopíruji do dalších řádků, tak musím ručně přepsat názvy listů. Ty však mám ve sloupci A, ale jak to zapsat do vzorce?


Odpověděl mi Daniel Sedláček:
Zkuste =INDIRECT(A2&".C5") vzorec složí dohromady List1.C5 a vrátí obsah buňky z dané adresy.


Funguje to výborně! Díky za radu.


Nyní bych rád dotaz ještě rozšířil. Chtěl bych použít výsledek funkce INDIRECT v jiném vzorci. Např. nějak takto

=SUMA(INDIRECT(A2&".E2):INDIRECT(A2&".E8))


Jde to nějak?

Editoval tkus (14. 11. 2011 18:30:17)

Offline

#2 11. 11. 2011 21:28:15

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

Re: Pokročilé adresování buněk - VYŘEŠENO

Samozřejmě, ale musíte zachovat logiku/formát vstupního parametru dané funkce. Např. SUM může mít podobu

=SUM(List2.A1:C3) - suma oblasti z List2
=SUM(List2.A1;List3.B2) - suma buňky z List2 a List3
=SUM(List2.A1:B2;List3.B2:C3) - suma oblastí z List2 a List3

Parametrem INDIRECT musí být správný řetězec, podle toho, co chcete SUMovat. Ověříte si to snadno. Řekněme, že data v bunkách jsou následující:

A1: List2
B1: A1
C1: B2
A2: List3
B2: B2
C2: C3

Výsledkem vzorce v D1

=A1&"."&B1&":"&C1

bude text/řetězec

List2.A1:B2

a výsledkem vzorce v D2

=A2&"."&B2&":"&C2

pak

List3.A1:C3

a to už jen správně obalíte INDIRECT a SUM, takže to bude

=SUM(INDIRECT(D1);INDIRECT(D2))

Ten váš příklad by měl správně vypadat:

=SUM(INDIRECT(A2&"."&E2);INDIRECT(A2&"."&E8))

což je suma=součet dvou buněk na jednom listu, jinak zapsáno

=INDIRECT(A2&"."&E2)+INDIRECT(A2&"."&E8)

Editoval hanus (11. 11. 2011 21:33:27)

Offline

#3 12. 11. 2011 19:07:07

tkus
Člen
Místo Šternberk
Registrace: 11. 11. 2011
Příspěvků: 3

Re: Pokročilé adresování buněk - VYŘEŠENO

Díky za reakci. Bohužel jsem ve svém příkladu zapomněl uvozovky. Myslel jsem

=SUMA(INDIRECT(A2&".E2"):INDIRECT(A2&".E8"))

A asi jsem se nepopsal přesně svou situaci. Tak to zkusím ještě jednou.
Na listě "List1" mám v List1.A3:List2 a v buňce List1.B3 chci sečíst buňky List2.C5:C15.
Lze napsat SUM tak, abych nemusel použít pomocnou buňku např. D1:=A3&".C5:C15" a pak

B3:=SUM(INDIRECT(D1))

, tak jak uvádíte ve svém příkladu?
Líbilo by se mi toto

B3:=SUM(INDIRECT(A3)&".C5:C15")

ale to nejde sad, hlásí "Chyba:502".

Editoval tkus (12. 11. 2011 19:11:08)

Offline

#4 13. 11. 2011 10:12:59

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

Re: Pokročilé adresování buněk - VYŘEŠENO

vVzorec z mého příkladu

=SUM(INDIRECT(D1);INDIRECT(D2))

lze samozřejmě zapsat bez pomocných odkazů/buněk, použil jsem je pro přehlednost. Takže by to bylo takto:

=SUM(INDIRECT(A1&"."&B1&":"&C1);INDIRECT(A2&"."&B2&":"&C2))

a ve vašem případě

=SUM(INDIRECT(A3&".C5:C15"))

tj. máte špatně uzávorkování parametru pro INDIRECT.

Offline

#5 14. 11. 2011 18:28:12

tkus
Člen
Místo Šternberk
Registrace: 11. 11. 2011
Příspěvků: 3

Re: Pokročilé adresování buněk - VYŘEŠENO

Díky, to je ono.

Offline

Zápatí