[SOLVED]Nazwa arkusza z komórki do funkcji szukaj.poziomo

Nie wiesz, gdzie umieścić swój post? Pisz tutaj!
pokertoja
Posty: 4
Rejestracja: pt cze 18, 2021 11:08 pm

[SOLVED]Nazwa arkusza z komórki do funkcji szukaj.poziomo

Post autor: pokertoja »

Cześć,

Muszę zestawić ze sobą dane z wielu arkuszy i mam na to pomysł, ale gorzej z wykonaniem. Problemem jest adresowanie do arkusza.
Do pobierania danych używam wyszukaj.poziomo

Kod: Zaznacz cały

=WYSZUKAJ.PIONOWO($C$2;$'08-20'.$A$1:$Y$40;2;0)
działa tak jak chcę, ale zamiast ręcznego wprowadzania nazwy arkusza "08-20" chciałbym użyć funkcji, która pobierze go z kolumny A w wierszu. Odpowiednio a10 (08-20), a11(09-20).
Na forum wyczytałem, że powinienem użyć adr.pośr ale nie wiem jak to zaimplementować. pewnie nie ogarniam ciągów znaków.

Kod: Zaznacz cały

=adr.pośr("a10")
zwraca wartość komórki prawidłowo, ale nie potrafię prawidłowo tego użyć w formule wyszukaj.poziomo.
Dostaje błędy 508 i 509.
Możecie pomóc?
Kolumna A zawiera daty w formie "08-20", "02-21" - i tak się będą nazywać arkusze.
Kolejne kolumny będą korzystały z funkcji wyszukaj.poziomo.

Chyba, że macie inny pomysł na to. Chętnie się czegoś nauczę.
Ostatnio zmieniony sob cze 19, 2021 7:08 pm przez pokertoja, łącznie zmieniany 1 raz.
OpenOffice 4.1.8 W10
Jan_J
Posty: 4576
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Nazwa arkusza z komórki do funkcji szukaj.poziomo

Post autor: Jan_J »

Wynikiem wywołania adr.pośr(tekst) jest adres utworzony na podstawie tekstu. Dajmy na to, formuła

Kod: Zaznacz cały

=wyszukaj.pionowo($C$1; $A$1:$B$10; 2; 0)
da się „przepisać” do postaci pośredniej np. takim sposobem:

* do jednej z komórek, powiedzmy D1, wpiszesz jako tekst adres początku bloku, czyli $A$1
* do innej, powiedzmy D2, wpiszesz adres końca bloku, czyli w tym przypadku $B$10
* i składamy to w całość:
adres bloku otrzymasz z funkcji

Kod: Zaznacz cały

adr.pośr(D1 & ":" & D2)
a formuła wyszukująca w takim razie będzie miała postać

Kod: Zaznacz cały

=wyszukaj.pionowo($C$1; adr.pośr(D1 & ":" & D2); 2; 0)
Może ten prosty przykład pozwoli ci „poczuć” różnicę między tekstem a adresem.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
pokertoja
Posty: 4
Rejestracja: pt cze 18, 2021 11:08 pm

Re: Nazwa arkusza z komórki do funkcji szukaj.poziomo

Post autor: pokertoja »

Dzięki za odpowiedź,

Niestety jeżeli użyję tego

Kod: Zaznacz cały

=WYSZUKAJ.PIONOWO ($C$2; $adr.pośr("a10").A1:Y40 ;2 ;0)
Macierzą dla funkcji wyszukaj.poziomo są komórki a1:y40 ale w innym arkuszu
Stąd

Kod: Zaznacz cały

$'08-20'.a1:y40;2;0
Jeżeli użyję adr.pośr("a10") w wolnej komórce to dostanę wartość tej komórki.
Jeżeli użyję adr.pośr(j10) a w j10 umieszczę adres "a10" to dostanę wartość a10.
Zrozumiałe.
Problemem chyba jest moja składnia.
OpenOffice 4.1.8 W10
Awatar użytkownika
Jermor
Posty: 2351
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Nazwa arkusza z komórki do funkcji szukaj.poziomo

Post autor: Jermor »

Nie możesz w funkcji utworzyć adresu poprzez składanie go z elementów. To możesz zrobić tylko w funkcji ADR.POŚR() ale argumentem tej funkcji musi być kompletny adres. Napisałem o tym w innym poście, że jeśli kompletny adres odwołuje się do pojedynczej komórki, to zwraca zawartość tej komórki. Jeśli kompletny adres odkreśla zakres komórek, to zwraca ten właśnie zakres.
Dlatego twoja formuła powinna wyglądać tak:

Kod: Zaznacz cały

=WYSZUKAJ.PIONOWO ($C$2; $ADR.POŚR(A10&".A1:Y40") ;2 ;0)
"Wyliczonym" adresem funkcji ADR.POŚR() będzie tekst znajdujący się w A10 z dołączonym ciągiem "kropka,A1, dwukropek, Y40, czyli coś w rodzaju "tekst.A1:Y40". Ponieważ taki zapis adresu określa zakres, to funkcja WYSZUKAJ.PIONOWO() tak to wykorzysta.
Gdybyś np. dodatkowo w B10 wpisał tekst "A1:Y40", wówczas w funkcji ADR.POŚR(), aby powstał prawidłowy tekstowy zapis adresu, należałoby wpisać formułę: A10&"."&B10
AOO 4.1.15, LO 24.8.2 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
Awatar użytkownika
Rafkus
Posty: 527
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: Nazwa arkusza z komórki do funkcji szukaj.poziomo

Post autor: Rafkus »

Do funkcji ADR.POŚR musisz wpisać cały adres w postaci tekstu:
komórka a10 (zawierającą nazwę docelowego arkusza), którą tekstowo należy połączyć z docelowym zakresem ".A1:Y40". Dopiero tak sklecony adres obszaru funkcja ADR.POŚR zamieni na odpowiednie odwołanie do zakresu

Kod: Zaznacz cały

=WYSZUKAJ.PIONOWO ($C$2;  ADR.POŚR($a10 & ".A1:Y40");  2 ; 0)
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
pokertoja
Posty: 4
Rejestracja: pt cze 18, 2021 11:08 pm

Re: Nazwa arkusza z komórki do funkcji szukaj.poziomo

Post autor: pokertoja »

Dzień drugi dobiega końca.
Rafkus - dzięki za wskazówkę. Twój kod wyrzuca mi bład #NAZWA?
Później zauważyłem, że prawidłowa składnia to

Kod: Zaznacz cały

$'nazwa_arkusza'.a1:$'nazwa_arkusza'.y40
Przerobiłem więc na

Kod: Zaznacz cały

a10 - zawiera nazwę arkusza
j10 - zawiera adres do a10
TEN DZIAŁA =WYSZUKAJ.PIONOWO( $C$2; $'08-20'.$A$1: $'08-20'.$Y$40; 2;0)
TEN NIE DZIAŁA =WYSZUKAJ.PIONOWO($C$2; $adr.pośr(j10&".$a$1:") $adr.pośr(j10)&"$y$40" ; 2; 0)
kolejne próby
v1
=WYSZUKAJ.PIONOWO($C$2; $adr.pośr(j10)&".$a$1:"&$adr.pośr(j10)&".$y$40" ;2;0)
v2
=WYSZUKAJ.PIONOWO($C$2;"$"&adr.pośr(a10)&".$a$1:"&"$"&adr.pośr(a10)&".$y$40";2;0)
v3
=WYSZUKAJ.PIONOWO($C$2;$adr.pośr(j10&".$a$1:($adr.pośr(j10".$y$40")));2;0)
i wiele wiele innych.
mój arkusz jest cały poobklejany różnymi formułami:)
Dostaję błędy przeróżne od NAZWA przez 508, 509, 510, #ref
Próbowałem już nawet w komórce wpisać

Kod: Zaznacz cały

'08-20'
a nawet

Kod: Zaznacz cały

$'08-20'
Za chwile będę wszystko na kartce liczył :)
Czy to da się wgl zrobić?
OpenOffice 4.1.8 W10
Awatar użytkownika
Jermor
Posty: 2351
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Nazwa arkusza z komórki do funkcji szukaj.poziomo

Post autor: Jermor »

Postaraj się przeczytać odpowiedzi skierowane do ciebie ze zrozumieniem. Argument funkcji ADR.POŚR() musi być tekstową postacią pełnego adresu. To funkcja ADR.POŚR() odniesie się do tego adresu.
Teraz o nazwach arkusza. Mogą one być w dowolne, jednak jeśli zawierają znaki niedozwolone do tworzenia nazw, to nazwa taka, umieszczana w części adresowej, musi być ujętą w pojedyncze apostrofy. Jeśli tworzysz formułę poprzez wskazywanie komórek, te apostrofy Calc dostawia automatycznie.
Aby powstała prawidłowa postać adresu, musisz utworzyć taką formułę:

Kod: Zaznacz cały

="'"&A10&"'.A1:Y40"
(wpisz ją sobie do jakiejś komórki i sprawdź, czy wytwarza właściwy adres). Tę formułę (już bez znaku "=" wstaw do wnętrza funkcji ADR.POŚR().
Formuła tworzy ciąg złożony z: pojedynczego apostrofu dołączonego do niego tekstu znajdującego się w komórce A10 i dołączonego dalej tekstu złożonego z pojedynczego apostrofu, znaku kropki i zapisu A1:Y40. Taką właśnie formułę musisz wpisać do funkcji ADR.POŚR().
J10 nie jest tu do niczego potrzebne.
AOO 4.1.15, LO 24.8.2 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
pokertoja
Posty: 4
Rejestracja: pt cze 18, 2021 11:08 pm

Re: Nazwa arkusza z komórki do funkcji szukaj.poziomo

Post autor: pokertoja »

Jermor i cała reszta dziękuję
Dostosowałem funkcję wg waszych wskazówek. Trochę mnie myliśy DOLARY.
Ostateczna formuła to

Kod: Zaznacz cały

=WYSZUKAJ.PIONOWO($C$2;ADR.POŚR("'"&A10&"'.A1:'"&A10&"'.y40");2;0)
Dziękuję serdecznie!
Jesteście wielcy
OpenOffice 4.1.8 W10
Awatar użytkownika
Jermor
Posty: 2351
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: [SOLVED]Nazwa arkusza z komórki do funkcji szukaj.poziom

Post autor: Jermor »

Jeżeli chcesz odwołać się do adresu znajdującego się w innym arkuszu, to nazwę tego arkusza wystarczy podać tylko przed pierwszym adresem komórki z tego obszaru, czyli można go wpisać tak: NAZWAARKUSZA.A1:F5. "Dolary" są potrzebne wtedy, gdy definiowany zakres ma być traktowany jako zakres bezwzględny.
AOO 4.1.15, LO 24.8.2 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
ODPOWIEDZ