GRY-Online.pl --> Archiwum Forum

Excel - jak spowodować, że wybór w polu kombi ma wpływ na inne pole kombi?

08.07.2006
01:53
[1]

minius [ Senator ]

Excel - jak spowodować, że wybór w polu kombi ma wpływ na inne pole kombi?

Mam taki oto problem.
Na arkuszu kalkulacyjnym znajduą się 2 pola kombi.
W pierwszym polu wybiera się nazwę grupy produktów.
W tym momencie w drugim polu kombi powinna wyświetlić się lista produktów odpowiednia dla grupy wybranej w polu pierwszym.
Wiem, że wybór danej podgrupy w pierwszym polu kombi zwraca liczbę wskazującą na wiersz, gdzie występuje wybrana nazwa podgrupy. Więc pole kombi po wyborze, wrzuca tą wartość do komórki A14
Próbowałem do okienka (drugiego pola kombi) "formatuj format" w polu "Zakres Wejściowy" wpisać zamiast trwałego zakres typu $B$2:$B$250, dać tam formułę typu =jeżeli(A14=1;$B$2:$B$25;jeżeli(A14=2;$B$26:$B$38);jeżeli(A14=3;$B$39:$B$48)

Niestety pole to nie przyjmuje formuł, lecz jedynie zakresy komórek.

Mam więc pytanie - jak to zrobić by wybó w polu kombi miał wpływ na wyświetlany zestaw komórek w polu kombi drugim?
Niestety z Visuala jestem noga, więc jeśli można to zrobić za pomocą Visulala, to proszę o łopatologicxzny opis.

08.07.2006
12:19
[2]

mike1980 [ Centurion ]

Bardzo ciekawy problem.
Sprawdzilem, rzeczywiscie nie sa sie ustawic kryterium w "Input range".
Pomyslalem, ze mozna dodac makro do pierwszego combi. Sprobowalem i dalo sie ale to jakby "overkill" do czegos takiego. No i da sie inaczej. Ten warunek nalezy wrzucic do nazw zakresow (wstaw==> nazwa ==> definiuj===> nazwywasz powiedzmy jako 'lista' i na dole w polu zakresu dajesz warunek ten co napisales). Teraz w kombi w zakresie wejsciowym wrzucasz: '=lista' i dziala.

08.07.2006
12:53
[3]

minius [ Senator ]

Próbowałem założyć w Wstaw-->Nazwa-->Definiuj tą "listę", dając w okienku 'Odwołuje się do' tą moją formułę. Zapisałem to i...
i teraz nie wiem jak dodać tą listę do pola kombi.
W 'Formatuj formant' w polu 'Zakres wejściowy' nie przyjmuje żadnej wersji tej "listy".
Ani =lista, ani ="lista", ani ='lista' nie jest dla niego rozpoznawalne.

Miałbym malutką prośbę, moze zamiast pisać o szczegółach tutaj moglibyśmy porozmawiać o nich na GG?

Mój numer to: 4903014
Byłbym bardzo zobowiązany.

08.07.2006
13:04
[4]

mike1980 [ Centurion ]

Wysłałem ci plik na maila. Jakby nie dzialal to chetnie pomogę później bo właśnie wychodzę.

08.07.2006
13:09
[5]

minius [ Senator ]

No i jest jeszcze jeden problem, w pierwszym polu Kombi zdefiniowanych jest 71 podgrup, więc nie wiem czy wogóle Excel dopuści tutaj tak długą formułę warunkową z 71 warunkami 'JEŻELI'

09.07.2006
09:05
[6]

minius [ Senator ]

No i faktycznie problem, niestety tak długiej formuły wpisać się nie da.
Nawet 6 warunków 'JEŻELI' już się nie wstawi, więc nie ma co myśleć o siedemdziesięciu kilku grupach towarów.

09.07.2006
11:03
[7]

mike1980 [ Centurion ]

Witam.
No jeśli ma być 71 podgrup to bez makra się chyba nie obejdzie (chyba - nie próbowałem).
Makrem się da w ten sposób:
Zakładam, że "komórka połączona" z kombi 1 (ta która ma zwrócić liczbę od 1 do 71) to D12, a podgrupy są w kolumnach zaczynając od kolumny H (tak, że w pierwszym wierszu jest nazwa grupy a w kolejnych wierszach składowe).

Sub Macro1()
x = Selection.Address 'tutaj zczytuje która komórka była zaznaczona przez rozpoczęciem makra, potem jest zaznaczana z powrotem
temp = Cells(12, 4) 'komórka zczytująca wartość z kombi 1 - czyli D12. 12 oznacza numer wiersza, 4 numer kolumny

lista = Range(Cells(2, 7 + temp), Cells(2, 7 + temp).End(xlDown)).Address 'tutaj tworzy się adres do zaktualizowania w kombi2. "7+temp" oznacza numer kolumny z listą. 'Tzn jeżeli w D12 jest 1 to weźmie kolumnę H (7+1).

ActiveSheet.Shapes("Drop Down 4").Select 'w polskiej wersji do pewnie będzie się trochę inaczej nazywać (to "Drop Down 4"). Nie mam polskiego excela więc trudno mi 'powiedzieć jak. Najlepiej sprawdzić włączając nagrywanie makra, zaznaczając kombi2, wyłączając makro i podglądając w kodzie jak excel to nazwał.

With Selection
.ListFillRange = lista
.LinkedCell = "$E$16"
.DropDownLines = 8
.Display3DShading = False
End With

Range(x).Select
End Sub

Teraz to makro trzeba dołączyć do kombi 1 i powinno działać.

Pliczek wysłałem pocztą.

© 2000-2026 GRY-OnLine S.A.