Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Excel lista rozwijana wyświetlanie w komórce jednych danych a umieszczanie innyc

robix123 24 Lis 2016 17:23 855 8
  • #1 24 Lis 2016 17:23
    robix123
    Poziom 4  

    Witam,
    W kolumnie A mam nazwy krajów, w kolumnie B ich międzynarodowe skróty.
    W kolumnie C chcę stworzyć listę rozwijaną (wykorzystując poprawność danych) w której by były wyświetlane nazwy pełne nazwy krajów, a po wskazaniu konkretnego w komórce pokazywałby się jego skrót. Czy jest to wykonalne? W kolumnie D wstawiłem formułę która to wykonuje tylko dla jednego wiersz. W załączeniu plik.
    Dziękuję za podpowiedzi.
    Piotr

    0 8
  • #3 25 Lis 2016 13:58
    Maciej Gonet
    Poziom 32  

    To nie jest takie proste, uzyskać taki efekt za pomocą listy rozwijanej kontroli poprawności i bez VBA.
    Po pierwsze napisz, czy rozwiązanie podane w pierwszej odpowiedzi jest zadowalające (wynik w innej komórce)?
    Jeśli nie, to odpowiedz na kilka pytań:
    1) Ile krajów wchodzi w grę - jak długa ma być docelowo ta lista?
    2) Czy ten skrót ma być tylko widoczny w komórce, czy ma być dalej przetwarzany?
    3) Czy można użyć VBA?
    4) Czy można użyć formantu zamiast listy poprawności danych?

    0
  • #4 25 Lis 2016 17:38
    robix123
    Poziom 4  

    Witam,
    Dziękuję za pomoc. Niestety nie jest to rozwiązanie jakie potrzebuję. Docelowa lista to 15 krajów. Skrót widoczny tylko w tej komórce, może być VBA. Formant nie wchodzi w rachubę. Chodzi mi o to, by wskazać kraj na rozwiniętej liście (np.: komórka D1 - Polska) i w tej samej komórce pojawił się skrót PL. Prawdopodobnie jest to nie możliwe.
    Z góry dziękuję za pomoc i odpowiedź
    Piotr

    0
  • #5 26 Lis 2016 12:33
    Maciej Gonet
    Poziom 32  

    Z użyciem VBA można to zrobić stosunkowo łatwo, tylko rozwiązanie wymaga adaptacji, gdy zmienią się zakresy danych.
    W Twoim pliku możesz zastosować taki kod obsługi zdarzenia Change:

    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
    
    If Target.Address <> "$D$1" Then Exit Sub
    Application.EnableEvents = False
    Range("D1").Value = Application.VLookup(Range("D1"), Range("A2:B5"), 2, False)
    Application.EnableEvents = True
    End Sub
    Adres D1 oznacza adres komórki z listą rozwijaną, adres A2:B5 oznacza zakres komórek z listą krajów i ich skrótami.

    0
  • #7 26 Lis 2016 19:07
    robix123
    Poziom 4  

    Witam,
    takiego rozwiązania poszukiwałem. Wielkie dzięki dla p. Goneta i clubsa.
    Mam jeszcze pytanie, czy jest możliwe zmodyfikowanie makra tak, by taka sama lista pojawiała się w innych komórkach, bez pisania makr dla poszczególnych komórek.
    Za odpowiedź z góry dziękuję.
    Z poważaniem
    Piotr

    0
  • Pomocny post
    #8 28 Lis 2016 10:13
    Maciej Gonet
    Poziom 32  

    Jeśli ma być więcej takich samych list w tym samym arkuszu, to należy je skopiować ręcznie, a następnie użyć np. takiego makra (zamiast tego poprzedniego). Dodałem tu jeszcze zabezpieczenia przed błędami.

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod
    Adresy komórek z listami trzeba wpisać do kodu w zakresie Range. Można tam podać również zakresy kilku komórek. Kod można również dopasować do list dynamicznych.

    0
  • #9 29 Lis 2016 13:13
    robix123
    Poziom 4  

    Witam,
    Panie Marcinie, bardzo dziękuję za pomoc w rozwiązaniu "narwanego" pomysłu. Trafia ona w 100% w założenia.
    Z poważaniem
    Piotr

    0