Tworzenie listy rozwijanej

Użytkowanie arkusza kalkulacyjnego
koneser69
Posty: 32
Rejestracja: śr mar 16, 2016 8:14 pm

Tworzenie listy rozwijanej

Post autor: koneser69 »

W załączniku przesyłam plik. Arkusz "Aktualny wykaz" zawiera informacje o tym co może znaleźć się w menu. Arkusz "Co mogą jeść" zawiera informację o tym co można przypisać danej osobie oczywiście o ile jest dostępne w arkuszu "Aktualny wykaz". Czy można dodać w arkuszu "Przydział" listy rozwijane tak aby podpowiadały co można przydzielić danej osobie?
Załączniki
Przydział.ods
(10.37 KiB) Pobrany 257 razy
OpenOffice 4.1.2 Windows 7
Awatar użytkownika
Rafkus
Posty: 516
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: Tworzenie listy rozwijanej

Post autor: Rafkus »

jest to do zrobienia dzięki poprawności danych.
Na karcie kryteria W polu zezwalaj ustaw Zakres komórek.
Zaznacz pola wyboru: Pokaż listę wyboru oraz Sortuj wpisy rosnąco (to pozwoli na eliminację duplikatów którymi będą puste pola pozostałe po eliminacji listy).
Do pola źródło wpisz formułę:

Kod: Zaznacz cały

JEŻELI('Aktualny Wykaz'.$A$1:$A$5 = PRZESUNIĘCIE('Co mogą jeść'.$B$1:$D$1;  PODAJ.POZYCJĘ($A2;  'Co mogą jeść'.$A$1:$A$28;0)-1;  0);   PRZESUNIĘCIE('Co mogą jeść'.$B$1:$D$1;  PODAJ.POZYCJĘ($A2;'Co mogą jeść'.$A$1:$A$28; 0)-1;0);"")
Troszkę spora ta formuła, więc spróbuję ją wyjaśnić od końca:

PODAJ.POZYCJĘ($A2; 'Co mogą jeść'.$A$1:$A$28; 0)
formuła ta zwraca na na której pozycji znajduje się dana osoba $A2 (arkusz Przydział) w arkuszu Co mogą zjeść. Wartość ta będzie stanowiła pewien parametr do funkcji PRZESUNIĘCIE.

PRZESUNIĘCIE('Co mogą jeść'.$B$1:$D$1; PODAJ.POZYCJĘ(...)-1; 0);
formuła ta przesuwa pewien zakres początkowy o pewną ilość wierszy - 1 w dół , kolumny nie będą się zmieniać.

W ten sposób lista będzie zawierała co dana osoba może jeść, następnym krokiem jest wyeliminowanie pozycji których nie ma w arkuszu Aktualny wykaz. Uzyskuje się to przy pomocy funkcji :
JEŻELI ( jakieś pola w Akualny wykaz są równe polom otrzymanym przy pomocy funkcji PRZESUNIĘCIE() ;
warunek prawdziwy: to je wyświetli;
warunek fałszywy: wyświetl jako pustą wartość "")
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Awatar użytkownika
Rafkus
Posty: 516
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: Tworzenie listy rozwijanej

Post autor: Rafkus »

Zostało mi pokazane nieco inne rozwiązanie, oto ono:

Liście nazw potraw została nadana nazwa "wykaz".
Listom tego, co dane osoby mogą jeść, nadano nazwę zgodną z imieniem osoby, której ta lista dotyczy.
Każdej komórce w arkuszu "Przydział" przypisano sprawdzanie poprawności danych wg następującej formuły (tutaj dla komórki B2):

Kod: Zaznacz cały

JEŻELI(CZY.BRAK(WYSZUKAJ.POZIOMO(wykaz; ADR.POŚR($A2); 1; 0));   "";   WYSZUKAJ.POZIOMO(wykaz;ADR.POŚR($A2);1;0))
Ta formuła zadziała tak jak formuła macierzowa, więc powstanie lista złożona z nazw, które są zgodne z tym co mogą jeść i znajduje się jednocześnie w wykazie. Oczywiście w LibreOffice można byłoby użyć funkcji JEŻELI.BŁĄD() lub JEŻELI.BRAK(), co uprościłoby formułę do takiej postaci:

Kod: Zaznacz cały

JEŻELI.BRAK(WYSZUKAJ.POZIOMO(wykaz; ADR.POŚR($A2); 1; 0);   "")
Osobiście mam pewne wątpliwości co do nazywania zakresów co mogą dane osoby jeść. Dla paru osób to uważam, że można tak zrobić ale dla większej ilości danych zastosowałbym rozwiązanie z PRZESUNIĘCIEM. Zamiast:

Kod: Zaznacz cały

ADR.POŚR($A2)
wpisałbym:

Kod: Zaznacz cały

PRZESUNIĘCIE('Co mogą jeść'.$B$1:$D$1;  PODAJ.POZYCJĘ($A2;  'Co mogą jeść'.$A$1:$A$28;0)-1;  0)
Zatem w Libre użyłbym takiej formuły:

Kod: Zaznacz cały

JEŻELI.BRAK(WYSZUKAJ.POZIOMO(wykaz; PRZESUNIĘCIE('Co mogą jeść'.$B$1:$D$1;  PODAJ.POZYCJĘ($A2;  'Co mogą jeść'.$A$1:$A$28;0)-1;  0); 1; 0);   "")
Dołączam plik z przedstawionymi sposobami:
W poniedziałek jest lista z zastosowaną 2 metodą,
W niedzielę jest lista z 1 metodą,
W sobotę jest lista mieszana, będzie działać tylko w LIBRE - zastosowałem funkcję JEŻELI.BRAK() której nie ma w OPEN OFFICE.
Załączniki
Przydział2.ods
(12.48 KiB) Pobrany 216 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
ODPOWIEDZ