Strona 1 z 1
[SOLVED]Nazwa arkusza z komórki do funkcji szukaj.poziomo
: pt cze 18, 2021 11:29 pm
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.
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ę.
Re: Nazwa arkusza z komórki do funkcji szukaj.poziomo
: sob cze 19, 2021 1:28 am
autor: Jan_J
Wynikiem wywołania adr.pośr(tekst) jest adres utworzony na podstawie tekstu. Dajmy na to, formuła
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
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.
Re: Nazwa arkusza z komórki do funkcji szukaj.poziomo
: sob cze 19, 2021 10:46 am
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
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.
Re: Nazwa arkusza z komórki do funkcji szukaj.poziomo
: sob cze 19, 2021 2:05 pm
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
Re: Nazwa arkusza z komórki do funkcji szukaj.poziomo
: sob cze 19, 2021 2:16 pm
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)
Re: Nazwa arkusza z komórki do funkcji szukaj.poziomo
: sob cze 19, 2021 6:07 pm
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
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ć
a nawet
Za chwile będę wszystko na kartce liczył

Czy to da się wgl zrobić?
Re: Nazwa arkusza z komórki do funkcji szukaj.poziomo
: sob cze 19, 2021 6:32 pm
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łę:
(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.
Re: Nazwa arkusza z komórki do funkcji szukaj.poziomo
: sob cze 19, 2021 7:07 pm
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
Re: [SOLVED]Nazwa arkusza z komórki do funkcji szukaj.poziom
: sob cze 19, 2021 8:43 pm
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.