ID tematu: 1493
 |
29. Lista na podstawie innej listy |
| Autor |
Wiadomość |
toxic
Excel Expert

Posty: 357
|
Wysłany: 2007-06-02, 03:37 29. Lista na podstawie innej listy
|
|
|
Funkcja sprawdzania poprawności umożliwia stworzenie wygodnej listy rozwijanej. Samo tworzenie listy rozwijanej omówione jest w pytaniu 11. FAQ Dynamicznie Rozszerzająca się Lista Możliwe jest stworzenie listy, której treść będzie zależała od wyboru z innej listy. Np. Mamy listę marek samochodów lub jakiegokolwiek innego produktu. Chcemy, by po wybraniu jednego z nich w drugiej liście pojawiły się modele tylko tej marki. Albo mamy listę drużyn, i chcemy by po wyborze jednej z nich w liście byli zawodnicy tej drużyny.
Aby uzyskać coś takiego, tak jak w przypadku zwykłej listy rozwijanej musimy nazwać zakresy. Trzeba nazwać zakresy, gdzie występują modele, a następnie zrobić listę tych nazw. Pierwszą listę wstawiamy poprzez Dane->Sprawdzanie Poprawności->Dozwolone =Lista, Źródło = Lista_nazw.
W drugiej liście wpisujemy jako źródło =ADR.POŚR(komórka z pierwszą listą)
Przykład w załączniku
listy.zip
|
Pobierz Plik ściągnięto 3168 raz(y) 3.2 KB |
|
|
 | ID posta:
7286
|
|
|
 |
|
EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email
|
Quasi
Excel Expert

Posty: 960
|
Wysłany: 2007-06-02, 21:22
|
|
|
W przykładzie wykorzystano:
@ SPRAWDZANIE POPRAWNOŚCI (Dane/Sprawdzanie poprawności/Ustawienia/Lista) |
_________________ http://www.swiatexcela.pl - blog nie tylko dla programistów VBA |
|
 | ID posta:
7328
|
|
|
 |
|
EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email
|
bodek


Posty: 1679
|
Wysłany: 2007-09-07, 19:15
|
|
|
Pozwoliłem sobie na dodanie do tego wątku przykładu na rozwiązanie tego problemu w sposób, który pozowli użytkownikowi na swobodne dopisywanie zarówno nowych list jak i na uzupełnianie zawartości już istniejących bez konieczności ciągłej modyfikacji zakresów już istniejących nazw.
Jest to zarazem taki "gotowiec" dla leniwych lub zapracowanych, umożliwiający stosunkowo szybkie zastosowanie tego narzędzia do swoich potrzeb.
Załącznik z rozwiązaniem, po uzupełnieniach o sugestie plitfyg przeniosłem do kolejnego swojego posta. |
| Ostatnio zmieniony przez bodek 2007-09-08, 20:53, w całości zmieniany 2 razy |
|
 | ID posta:
14228
|
|
|
 |
plitfyg
Excel Expert

Posty: 107
|
Wysłany: 2007-09-08, 17:03
|
|
|
Dobra robota Bodek !
Tak sobie tylko pomyślałem. Z własnego doświadczenia wiem, że w przypadku takich list rozwijanych, które bazowały na innych listach rozwijanych to co zawsze nieco denerwowało mnie to fakt, że w drugiej liście ostatnio wybrana wartość pozostawała pomimo wyboru innego wariantu w liście pierwszej. Pewien jestem, że wiesz o co chodzi. Po prostu druga lista nie jest odświeżana (czyszczona) po zmianie na pierwszej liście. No i za każdym razem szukałem gdzieś w sieci rozwiązania. Mam dziwne wrażenie, że innych też może to nurtować. Może więc skoro już przygotowałeś takiego ładnego gotowca załączyć do niego krótkie makro, które i ten problem od razu by rozwiązywało ? I jakos ładnie je opisać. Ewentualnie przerobić tak, aby użytkownik mógł sobie dowolnie wybrać miejsce gdzie będzie miał listy rozwijane a makro będzie dla nich działało. NIe chcę tu się za bardzo mieszać, bo projekt w sumie Twój. Ot - taka sugestia
W załączeniu Twój plik z dopisaną jedna linijką kodu.
Plitfyg
Dynamiczne_Listy_rozwijalne_przyklad.zip
|
Pobierz Plik ściągnięto 1777 raz(y) 13.55 KB |
|
_________________ Więcej odpowiedzi na ciekawe pytania znajdziesz także na moim blogu www.excelblog.pl |
|
 | ID posta:
14306
|
|
|
 |
|
EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email
|
bodek


Posty: 1679
|
Wysłany: 2007-09-08, 20:51
|
|
|
Bardzo dobry pomysł, mnie też denerwuje to zjawisko. Pozwoliłem sobie natomiast trochę poprawić Twoje makro. Poprzedni załącznik - z poprzedniego posta kasuję.
Dynamiczne_Listy_rozwijalne_przyklad_plus_makro.rar
|
Pobierz Plik ściągnięto 1769 raz(y) 15.7 KB |
|
|
 | ID posta:
14319
|
|
|
 |
Piotr_Korbicz
Excel Expert

Posty: 534
|
Wysłany: 2007-12-18, 19:57
|
|
|
Początkowo poszedłem w tym samym kierunku co Wy ale jak się okazało, że muszę utworzyć kilkadziesiąt kolumn z listami "zależnymi' to wymiękłem i zastosowałem rozwiązanie opierajace się na:
- dwóch kolumnach (zasadniczo dwóch, bo w załączniku używam jeszcze trzeciej dla unikalnych marek, aby go zbytnio nie komplikować) do których można dopisywać
- dwóch zakresach nazwanych
sprawdzanie poprawności - listy zależne.rar
|
Pobierz Plik ściągnięto 1279 raz(y) 3.83 KB |
|
|
 | ID posta:
22760
|
|
|
 |
|
EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email
|
Paszka
słuchacz

Posty: 10
|
Wysłany: 2007-12-27, 12:08
|
|
|
Witam.
Moje uwagi nie są zbyt konstruktywne, ale może pomogą komuś uniknąć wiele niepotrzebnej pracy i nerwów.
Otóż rozwiązania Bodka w obecnej formie nie udało mi się zastosować dla tabeli, przystosowane jest do obsługi pojedynczych komórek (jeśli się mylę, proszę dać znać, bardzo mi się to przyda :) )
Rozwiązanie Piotra_K można natomiast zastosować dla tabeli, tak jak w przykładzie, ale trzeba uważać przy poszerzaniu list. Posługując się tym przykladem, powiem tak: modele trzeba dopisywać "przy grupie", jeśli jakiś model dopiszemy na koncu listy, po innej marce, to nie tylko nie będzie go na liście rozwijalnej, na której powienien być, ale jeszcze na dodatek ta lista będzie obejmowała niewłaściwy zakres. Jeśli pilnować tego ograniczenia, to działa bez zarzutu.
I jeszcze pytanie:
Czy podane makro można dostosować, żeby obsługiwało tabelę (określone pole), a nie tylko wynikową komórkę? |
_________________ Pozdrawiam |
|
 | ID posta:
23192
|
|
|
 |
Piotr_Korbicz
Excel Expert

Posty: 534
|
Wysłany: 2007-12-27, 14:16
|
|
|
Koncepcja zakładająca listy w kolejnych kolumnach jest uciążliwa:
- w momencie kiedy te listy trzeba zdefiniować - fizycznie wypisać: np lista ulic dla kilkudziesięciu miast, każde miasto w odrębnej kolumnie i pod nim lista ulic - to jest technicznie dość pracochłonne
- w momencie kiedy listy te trzeba często aktualizować - to już się robi mocno "upierdliwe"
Z czymś takim właśnie musiałem sobie poradzić nie tracąc na to zbyt wiele czasu.
Układ, który mi niechcący się udał, opieraja się na dwóch powiązanych kolumnach, które nie są niczym innym niż lekko obrobioną tabelą przestawną (dla poruszanego tu przykładu w kolumnie "miasto" w tabeli przestawnej będą puste komórki, które trzeba wypełnić) więc w razie potrzeby aktualizacji wszystkich list wystarczy "odśwież dane" I po robocie. |
|
 | ID posta:
23202
|
|
|
 |
|
EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email
|
half
słuchacz

Posty: 11
|
Wysłany: 2008-08-21, 15:15 koledzy
|
|
|
nie za bardzo to rozumie a musze wlasnie stworzyc cos takiego do pracy tylko ze na zasadzie 3 list
nazwa grupy - nazwa uzytkownika - nazwa obowiazkow - pozniej reszte z nazwy obowiazkow wypelnie sobie przez vlookup
Jezeli bedzie to mozliwe prosze o wytlumaczenie jak to zrobic...
Jestem zielony w excelu i prosilbym o wytlumaczenie step by step.
Dziekuje |
|
 | ID posta:
44485
|
|
|
 |
bodek


Posty: 1679
|
Wysłany: 2008-09-18, 15:57
|
|
|
Witam grono,
Przy okazji kolejnych zmagań z Excelem, miałem Ci ja potrzebę aby utworzyć listy na podstawie wyboru z innych list ale kolejne dane źródłowe zawarte były w odrębych arkuszach, a nie zgrupowane w jednej tabeli w jednym arkuszu.
Opracowałem zatem przykład, w którym w trzech osobnych arkuszach są ulokowane dane dotyczące producenta samochodu, produkowanych modeli i dostępnych dla każdego modelu roczników produkcji. Każdy producent to inny arkusz z danymi.
Czyli:
-> lista 1 - wybieramy producenta,
-> lista 2 - wybieramy model, spośród oferty wybranego wcześniej producenta,
-> lista 3 - wybieramy rocznik produkcji, spośród dostępnych dla tego modelu roczników.
Jest to również sposób (druga lista przykładu), jak można dokonywać wyborów na 2,3,4,... liście, bez potrzeby grupowania danych jak w poprzednich przykładach tego wątku.
Reszta w załączniku.
listy_listy_wer_2.rar
|
Pobierz Plik ściągnięto 1891 raz(y) 68.17 KB |
|
_________________ Szkolenia MS Excel, Świat Excela, Blog o Excelu |
|
 | ID posta:
46483
|
|
|
 |
|
EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email
|
half
słuchacz

Posty: 11
|
Wysłany: 2008-10-03, 09:04
|
|
|
| Dziekuje baaaardzo - teraz to jest zaj... czytelne i jasne :) |
|
 | ID posta:
47702
|
|
|
 |
kecag2906
Starszy Forumowicz


Posty: 25
|
Wysłany: 2008-12-03, 22:28
|
|
|
Genialne pomysły macie :) Co dwie głowy to nie jedna :)
Pozdrawiam
[ Dodano: 2008-12-03, 22:42 ]
Piotr_K, jak stworzyłeś zakres do którego można dodawać kolejne marki / modele ?
Zabawę z listami dopiero zaczynam i krótkie wyjaśnienie będzie pomocne.
Dzięki i Pozdrawiam |
|
 | ID posta:
52561
|
|
|
 |
|
EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email
|
bodek


Posty: 1679
|
Wysłany: 2009-10-14, 20:50
|
|
|
Hej forumowicze.
Po jakimś czasie, człowiek łapie się za głowę, "jaki to był mądry" i coś tam proponował.
Czas jednak pewien minął i w związku z tym zapraszam na rzetelniejszą wersję rozwiązania części spośród występujących tutaj problemów.
http://excelperfect.pl/?p=243
p.s.
proszę nie ściągać i czytać moich poprzednich propozycji w tym wątku |
_________________ Szkolenia MS Excel, Świat Excela, Blog o Excelu |
| Ostatnio zmieniony przez bodek 2012-01-20, 17:42, w całości zmieniany 1 raz |
|
 | ID posta:
74888
|
|
|
 |
Wormsek
Excel Expert


Zaproszone osoby: 1
Posty: 2657
|
Wysłany: 2010-10-29, 18:08
|
|
|
Hmm panowie napotkałem dziwną przypadłość.
Mam listę rozwijaną w D2. Na jej podstawie listę w D4, na podstawie której listę w D6. (wszystkie to sprawdzanie poprawności na zdefiniowanych zakresach).
Chciałem, aby się właśnie ładnie czyściło sprawdzanie poprawności jak zmienię listę w D2.
| Kod: | Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Set rng = Intersect(Target, Me.Range("D2"))
If Not rng Is Nothing Then
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
rng.Offset(2, 0).ClearContents
rng.Offset(4, 0).ClearContents
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
End If
End Sub
|
I nie wiem czemu, ale jeśli z listy zmienię myszką pozycję, to zdarzenie się uruchamia, ale nie kasuje mi tych dwóch list niżej. Jeśli natomiast na D2 nacisnę F2 i enter, czyli normalnie edycja i zatwierdzenie, to bez problemu czyści.
Czemu ma takie widzimisię?
[ Dodano: 2010-10-30, 15:23 ]
Hmm widzę, że nie mogę edytować postu więc dodam:
Powyższy problem był wynikiem tego, że w skoroszycie miałem funkcję użytkownika, którą wykorzystywałem do jednej z list.
Nie miałem dodanego
| Kod: | | Application.Volatile |
i może to było powodem. Nie wiem. Już nie miałem jak sprawdzić, ponieważ znalazłem inny sposób na wyznaczenie list i po fakcie dopiero się zorientowałem, że kod mi zaczął działać. |
_________________ Pozdro
Worm
FAQ - Najczęściej zadawane pytania.
JAK KORZYSTAĆ Z SZUKAJKI
Słownik funkcji |
|
 | ID posta:
98998
|
|
|
 |
|
EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
| |
| |