adres arkusza

Użytkowanie arkusza kalkulacyjnego
qlex
Posty: 3
Rejestracja: wt wrz 29, 2009 8:37 pm

adres arkusza

Post autor: qlex »

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
Jan_J
Posty: 4621
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: adres arkusza

Post autor: Jan_J »

qlex pisze: 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

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 (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
qlex
Posty: 3
Rejestracja: wt wrz 29, 2009 8:37 pm

Re: adres arkusza

Post autor: qlex »

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
Jan_J
Posty: 4621
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: adres arkusza

Post autor: Jan_J »

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 (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
qlex
Posty: 3
Rejestracja: wt wrz 29, 2009 8:37 pm

Re: adres arkusza

Post autor: qlex »

JJ,
dzięki, zadziałało !
OpenOffice 3.0 / Windows Vista
najmar11
Posty: 4
Rejestracja: czw lut 04, 2010 1:28 pm

Re: adres arkusza

Post autor: najmar11 »

Dzięki WIELKIE!!!

też szukałem właśnie czegoś takiego.... działa super
OOo 3.1.1, Kubuntu
mg2
Posty: 170
Rejestracja: czw sty 28, 2010 9:20 pm

Re: adres arkusza

Post autor: mg2 »

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
Jan_J
Posty: 4621
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: adres arkusza

Post autor: Jan_J »

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 (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Awatar użytkownika
quest-88
Posty: 1105
Rejestracja: ndz maja 24, 2009 8:12 pm
Lokalizacja: Zabrze
Kontakt:

Re: adres arkusza

Post autor: quest-88 »

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.
mg2
Posty: 170
Rejestracja: czw sty 28, 2010 9:20 pm

Re: adres arkusza

Post autor: mg2 »

Właściwie wystarczy takie makro

Kod: Zaznacz cały

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

=SUMA(arkusz_pierwszy.A1:ostatni.A1)
Załączniki
nazwa_ark_z_indeksu.ods
(10.66 KiB) Pobrany 472 razy
OOo3.1.1 na Ubuntu 9.04
ODPOWIEDZ