Przeszukiwanie wielu kolumn

Użytkowanie arkusza kalkulacyjnego
JedenGość
Posty: 198
Rejestracja: czw mar 07, 2019 6:54 pm

Przeszukiwanie wielu kolumn

Post autor: JedenGość »

Mam taką zagadkę.

Chcę przeszukać zakres dwóch kolumn, aby pobrać dane z dwóch innych w zależności od konkretnego warunku.

Próbowałem z funkcją WYSZUKAJ.PIONOWO oraz INDEKS i PODAJ.POZYCJĘ. Niestety nie udaje mi się.

Szczegóły w pliku.

Z góry dziękuję za pomoc.
Załączniki
JedenGosc_2022-09-12.ods
(17.42 KiB) Pobrany 102 razy
Libre Office 24.8.1.2 / Windows 11
Awatar użytkownika
Jermor
Posty: 2361
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Przeszukiwanie wielu kolumn

Post autor: Jermor »

Zrób sobie dodatkową kolumnę F z formułą łączącą D i E i ukryj ją. Za pomocą funkcji INDEKS(), dla której wiersz zostanie wyliczony funkcją PODAJ.POZYCJĘ() w tej ukrytej kolumnie, z wykorzystaniem wyrażeń regularnych.
Odsyłam w załączeniu, to co dodałem — pokolorowałem.
Załączniki
JedenGosc_2022-09-12J.ods
(23.6 KiB) Pobrany 125 razy
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.
JedenGość
Posty: 198
Rejestracja: czw mar 07, 2019 6:54 pm

Re: Przeszukiwanie wielu kolumn

Post autor: JedenGość »

Dziękuję Jermor.

Wszystko działa poprawnie.

Tylko (nie wspomniałem o tym wcześniej) nie działa to rozwiązanie w Arkuszach Google. Tak, jakby nie obsługiwały one wyrażeń regularnych. Masz jakiś patent na Google?
Libre Office 24.8.1.2 / Windows 11
Awatar użytkownika
Rafkus
Posty: 527
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: Przeszukiwanie wielu kolumn

Post autor: Rafkus »

W arkuszach gogle zadziała formuła macierzowa.

Ogólnie rozwiązanie jest praktycznie takie samo jak zaprezentowane wcześniej przez @Jermora. Istotną zmianą, jest zmajstrowanie jedno kolumnowego zakresu do sprawdzania danego warunku zamiast sprawdzanie go w dwóch kolumnach. Do tego celu wystarczy funkcja JEŻELI, będzie ona działała mniej więcej tak:
JEŻELI jakaś wartość z Kolumny1 = "A" TO WYKORZYSTAJ wartość A, w PRZECIWNYM razie wykorzystaj wartość z Kolumny2. Tak zrobiony zakres będzie przeszukiwanym źródłem danych dla funkcji PODAJ.POZYCJĘ.

Użyta przeze mnie formuła to:

Kod: Zaznacz cały

= INDEKS($A$1:$B$41; 
	PODAJ.POZYCJĘ(G1; JEŻELI(D$1:D$41=G1;  G1;  E$1:E$41); 0))
a ponieważ jest to formuła macierzowa należy zatwierdzić ją przez jednoczesne wciśnięcie klawiszy CTRL+SHIFT+ENTER
Załączniki
JedenGosc_2022-09-12R.ods
(22.1 KiB) Pobrany 104 razy
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
JedenGość
Posty: 198
Rejestracja: czw mar 07, 2019 6:54 pm

Re: Przeszukiwanie wielu kolumn

Post autor: JedenGość »

Rafkus, dziękuję.

Twoje rozwiązanie działa poprawnie, gdy zaimportowałem Twój plik do Arkusza google.

Jednak po zaimplementowaniu formuł do końcowego pliku, pojawia mi się komunikat #ADR! i "Wynik tablicowy nie został rozszerzony, ponieważ spowodowałoby to nadpisanie danych w (tu nr wiersza i kolumny)"

Wiesz jak to naprawić?

EDIT:

Poradziłem sobie. Przerobiłem A1:B41 na A1:A41 i B1:B41 i dwie formuły wkleiłem do osobnych pól. Działa. Próbowałem coś zdziałąć googlowską funkcją ARRAYCONSTRAIN, ale nie chciało działać.
Libre Office 24.8.1.2 / Windows 11
Awatar użytkownika
Rafkus
Posty: 527
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: Przeszukiwanie wielu kolumn

Post autor: Rafkus »

JedenGość pisze: wt wrz 13, 2022 6:56 pm pojawia mi się komunikat #ADR! i "Wynik tablicowy nie został rozszerzony, ponieważ spowodowałoby to nadpisanie danych w (tu nr wiersza i kolumny)"
W Pomocy, w opisie funkcji pisze:
INDEKS
Funkcja INDEKS zwraca zawartość komórki określonej przez numer wiersza i kolumny lub opcjonalnie przez nazwę zakresu.
Składnia
INDEX(Odwołanie [; Wiersz [; Kolumna [; Range]]])
  • Odwołanie jest odwołaniem wprowadzonym bezpośrednio lub przez podanie nazwy zakresu. Jeśli odwołanie składa się z wielu zakresów, odwołanie lub nazwę zakresu należy ująć w nawiasy.
  • Wiersz (parametr opcjonalny) oznacza numer wiersza odwołania do zakresu, dla którego należy zwrócić wartość. W przypadku wartości zero (brak określonego wiersza) zwrócone zostaną wszystkie wiersze, do których zostało podane odwołanie.
  • Kolumna (parametr opcjonalny) oznacza numer kolumny odwołania do zakresu, dla którego należy zwrócić wartość. W przypadku zera (braku określonej kolumny), zostaną zwrócone wszystkie kolumny, do których istnieje odwołanie.
W mojej formule odwołaniem jest pewien zakres danych ($A$1:$B$41 czyli 41wierszy i 2 kolumny), nr Wiersza jest obliczony przy pomocy funkcji PODAJ.POZYCJĘ, natomiast pominąłem podanie nr Kolumny. W ten sposób, wynikiem mojej formuły był jednowierszowy, dwukolumnowy obszar. Podejrzewam, że ten komunikat się pojawił ponieważ w komórce obok miałeś coś wpisane - w mojej próbie wystarczyło wyczyścić sąsiednią komórkę a błąd sam znikł....
Aby otrzymać z INDEKSU tylko jedną wartość wystarczyłoby także do podanej formuły dopisać z której kolumny ma pochodzić wynik (1 lub 2) np:

Kod: Zaznacz cały

= INDEKS($A$1:$B$41; 
	PODAJ.POZYCJĘ(G1; JEŻELI(D$1:D$41=G1;  G1;  E$1:E$41); 0);
	1)
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
JedenGość
Posty: 198
Rejestracja: czw mar 07, 2019 6:54 pm

Re: Przeszukiwanie wielu kolumn

Post autor: JedenGość »

Rafkus pisze: wt wrz 13, 2022 8:19 pm Podejrzewam, że ten komunikat się pojawił ponieważ w komórce obok miałeś coś wpisane - w mojej próbie wystarczyło wyczyścić sąsiednią komórkę a błąd sam znikł...
Jest dokładnie tak, jak napisałeś... :shock: W życiu bym o tym nie pomyślał :crazy:

Jeszcze raz dziękuję.
Libre Office 24.8.1.2 / Windows 11
ODPOWIEDZ