adres arkusza

Użytkowanie arkusza kalkulacyjnego

adres arkusza

Postprzez qlex » Cz lis 12, 2009 9:34 pm

Witam,
mam dokument z kilkuset (!) arkuszami, które dodatkowo nazwałem COSTAM1, COSTAM5, INNE6 itd.

Na pierwszym arkuszu, chce zrobić zestawienie, które pokazuje kilka kolumn:
nazwa arkusza, stan, cena końcowa

Co do "stan" i "cena końcowa" - to łatwe, stosuję np =Arkusz2.C6 i już
a co z "nazwa arkusza" - czy "zakładki", czyli arkusze mają jakiś adres ?

Dodatkowo, Mając np w tym pierwszy arkuszu kilka wierszy =Arkusz2.C6, =Arkusz3.C6, =Arkusz4.C7 itd. - zaznaczam te 3 , przeciągam znacznik krzyżyka, żeby mi automatycznie stworzyło 150 takich wpisów, ale niestety, zamiast Arkusz5, 6, 7, calc mi tylko potwarza arkusz2,3,4 i znow 2,3,4.

nie wiem jak sobie z tymi 2 problemami poradzic.

bede wdzieczny za wskazowki,
Qlex
OpenOffice 3.0 / Windows Vista
qlex
 
Posty: 3
Dołączył(a): Wt wrz 29, 2009 8:37 pm

Re: adres arkusza

Postprzez Jan_J » Cz lis 12, 2009 11:31 pm

qlex napisał(a):Co do "stan" i "cena końcowa" - to łatwe, stosuję np =Arkusz2.C6 i już
a co z "nazwa arkusza" - czy "zakładki", czyli arkusze mają jakiś adres?
Co to znaczy ,,i już''? podawać *ręcznie* adres ze 150 arkuszy, za każdym razem inny?
Arkusze mają numer -- zależny od aktualnej pozycji na liście zakładek, oraz nazwę, którą widać w zakładce.

Dodatkowo, Mając np w tym pierwszy arkuszu kilka wierszy =Arkusz2.C6, =Arkusz3.C6, =Arkusz4.C7 itd. - zaznaczam te 3 , przeciągam znacznik
Tak możesz zrobić z tekstami, ale nie z fragmentami adresów. Adresy arkuszy będą się przesuwać w miarę kopiowania formuły ,,w głąb'' -- czyli z arkusza na arkusz, w trzecim wymiarze.

Wypróbuj to:
Kod: Zaznacz cały   Rozszerz widokZwiń widok
sub podsumowanie()
doc = thisComponent
' wstaw nowy arkusz na początek
doc.Sheets.insertNewByName("Podsumowanie", 0)
' pamiętaj go w programie jako ark
ark = doc.Sheets.getByIndex(0)
' przejrzyj arkusze od drugiego do końca
for i = 1 to doc.Sheets.Count-1
  ' pobierz jego nazwę
  nazwa = doc.Sheets.getByIndex(i).Name
  ' wpisz formułę do pierwszego arkusza
  ark.getCellByPosition(0,i).Formula = "=$" & nazwa & ".$C$6"
next i
' koniec
end sub
zamiast $C$6 wpisując adres komórki z danego arkusza.
JJ
LO 6.2 ∙ AOO 4.1.7 ∙ Python (3.8|2.7) ∙ Unicode 12 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 4103
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: adres arkusza

Postprzez qlex » Cz lis 12, 2009 11:35 pm

JJ, dzięki za wskazówki.

Właśnie, chodzi mi o nazwę, którą widać w zakładce.
Czy jest możliwość, żeby tą nazwę wyświetlić w wybranej komórce, przy zastosowaniu jakiejś funkcji ?

co do kodu, rozumiem ze to makro, ale nie za bardzo wiem "jak sie to je" ?
Tzn, mam utworzyc takie makro i potem je uruchomic ?

Qlex
OpenOffice 3.0 / Windows Vista
qlex
 
Posty: 3
Dołączył(a): Wt wrz 29, 2009 8:37 pm

Re: adres arkusza

Postprzez Jan_J » Cz lis 12, 2009 11:43 pm

Tak.
W ,,użytkowym'' podejściu do Calca nie ma związku między numerem arkusza (= stronicy) a jego nazwą.
Numer wiersza zmieniasz w formule przeciągając/kopiują ,,w dół'', kolumny -- ,,w bok'' zaś arkusza ,,w głąb''.

Makro to jedyny sposób, by skutecznie zarządzać taką strukturą jaką zrobiłeś. Można by jeszcze użyć aresowania pośredniego, ale i tak pozostanie problem, jak wygenerować nazwy arkuszy w kolejności.

Narzędzia/Makra/Zarządzaj/(wybierz na drzewie albo Moje Makra, albo nazwę swojego skoroszytu)/Nowy/(wklej kod z postu). Potem użyj Uruchom.
Prościutkie podesłane makro zrobi ci nowy arkusz (numer 1) z kolumną formuł pobierających wartość c6 z każdego arkusza. Jeżeli są to różne komórki dla poszczególnych stron to można by pomyśleć, jak je wykrywać.
JJ
LO 6.2 ∙ AOO 4.1.7 ∙ Python (3.8|2.7) ∙ Unicode 12 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 4103
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: adres arkusza

Postprzez qlex » Pt lis 13, 2009 4:13 pm

JJ,
dzięki, zadziałało !
OpenOffice 3.0 / Windows Vista
qlex
 
Posty: 3
Dołączył(a): Wt wrz 29, 2009 8:37 pm

Re: adres arkusza

Postprzez najmar11 » Cz lut 04, 2010 1:52 pm

Dzięki WIELKIE!!!

też szukałem właśnie czegoś takiego.... działa super
OOo 3.1.1, Kubuntu
najmar11
 
Posty: 4
Dołączył(a): Cz lut 04, 2010 1:28 pm

Re: adres arkusza

Postprzez mg2 » N lut 07, 2010 4:45 am

Drobny komentarz:

jest funkcja "arkusz", która zwraca numer arkusza np.
=ARKUSZ(Arkusz2.A1)
zwraca wartość "2"

Aż się prosi żeby napisać funkcję
"WART.ARK.NR(adres_komórki, numer_arkusza)"
zwracająca zawartość wybranej komórki.
OOo3.1.1 na Ubuntu 9.04
mg2
 
Posty: 170
Dołączył(a): Cz sty 28, 2010 9:20 pm

Re: adres arkusza

Postprzez Jan_J » N lut 07, 2010 7:15 pm

Faktycznie, aż dziw, że nie ma jej w standardzie.
Taką funkcję o nagłówku (nrStrony, nrKolumny, nrWiersza) niby łatwo napisać, ale ponieważ jej argumenty nie są adresami komórek, tylko liczbami, nie są brane pod uwagę w ,,kaskadzie zależności'' przy automatycznym przeliczaniu arkusza.
JJ
LO 6.2 ∙ AOO 4.1.7 ∙ Python (3.8|2.7) ∙ Unicode 12 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 4103
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: adres arkusza

Postprzez quest-88 » N lut 07, 2010 8:47 pm

Jeśli to takie użyteczne, postuluje o dodanie stosownego zgłoszenia do IssueZilli. :)
Standardowa diagnostyka rozwiązuje 90% problemów typu "wcześniej działało, ale już nie działa".
Przepis na LibreOffice
Uzyskałeś pomoc? Poinformuj innych o sprawdzonym rozwiązaniu i podziękuj. Dodaj [SOLVED] w tytule.
Avatar użytkownika
quest-88
 
Posty: 1105
Dołączył(a): N maja 24, 2009 8:12 pm
Lokalizacja: Zabrze

Re: adres arkusza

Postprzez mg2 » Śr mar 24, 2010 2:59 am

Właściwie wystarczy takie makro

Kod: Zaznacz cały   Rozszerz widokZwiń widok
function ark_nazwa(numer as integer)
if numer > thisComponent.sheets.count or numer < 1 then
  ark_nazwa = "błąd"
  else
   ark_nazwa = thisComponent.Sheets.getByIndex(numer-1).name
end if
end function


Funkcji BASICa można używać w komórkach jak funkcji arkusza.

Przykładowe użycie w załączniku.

PS

W przypadku różnych nazw arkuszy można odwoływać się do ich zakresu podając pierwszy i ostatni np.
Kod: Zaznacz cały   Rozszerz widokZwiń widok
=SUMA(arkusz_pierwszy.A1:ostatni.A1)
Załączniki
nazwa_ark_z_indeksu.ods
(10.66 KiB) Pobrane 277 razy
OOo3.1.1 na Ubuntu 9.04
mg2
 
Posty: 170
Dołączył(a): Cz sty 28, 2010 9:20 pm


Powrót do Calc

Kto przegląda forum

Użytkownicy przeglądający ten dział: MSN [Bot] i 3 gości