Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 1493 Skopiuj do schowka 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 Skopiuj do schowka
 
 

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 Skopiuj do schowka
 
 

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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 

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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 

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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 

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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 

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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 
 

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 :mrgreen:
_________________
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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 

EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email

Wyświetl posty z ostatnich:   
Odpowiedz do tematu
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

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.marketingNET.pl

Archiwum