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

Excel - kopiowanie zawartości listy rozwijanej do kolumny

20 Mar 2009 13:40 11063 23
  • Poziom 20  
    Witam.
    Zrobiłem w Excelu raport wymienianych części. Jest stworzona lista rozwijana a w niej wszystkie rodzaje elementów które wymieniłem w danym dniu.
    Dodatkowo chciałem zrobić sumę wymienianych części i procentowy bilans.
    Wszystko to musiałem robić ręcznie.
    Excel - kopiowanie zawartości listy rozwijanej do kolumny
    Tzn. sprawdzić jakie elementy wymieniłem i wpisać je obok do kolumny.
    Czy można w pliku Excela zrobić coś w rodzaju listy, ale żeby ta lista skopiowała się do kolumny obok. Przykład:
    Tu jest lista stworzona z kolumny E
    Excel - kopiowanie zawartości listy rozwijanej do kolumny
    Czy da się tą listę stworzyć w taki sposób żeby nie była rozwijana, tylko żeby wszystkie części z listy same wpisały się do kolumny.
    Czy jest jakaś funkcja która po wpisaniu jej w komórkę, wyświetli mi wszystkie rodzaje części, czy wyrazów jakie użyłem w tej kolumnie?
  • Moderator Programowanie
    Pewnie tak, tylko nie wiadomo do końca o co chodzi. Ten drugi obrazek wygląda na tabelę z rozwiniętymi opcjami filtrowania a nie listę (mogę się mylić).
    Najlepiej wrzuć jakiś (skrócony) przykład i opisz dokładniej.
  • Poziom 40  
    Ja też nie do końca łapie co chcesz zrobić. Zapytam jeszcze ilu składnikowa jest lista wszystkich części?
  • Poziom 20  
    Racja, może nie zbyt jasno to napisałem.
    Ta opcja filtrowania to dokładnie to o co mi chodzi,ale potrzebuję to w kolumnie obok.
    Może rysunek będzie bardziej jasny:
    Excel - kopiowanie zawartości listy rozwijanej do kolumny
  • Moderator Programowanie
    Najprościej: Zaznaczyć kolumnę, z menu Dane>Filtr>Filtr zaawansowany wybrać "kopiuj w inne miejsce", zaznaczając "tylko unikatowe rekordy". Podsumowania można wykonać przy pomocy SUMA.JEŻELI.
  • Poziom 20  
    Działa tylko częściowo:
    Zaznaczam kolumnę: Dane>Filtr>Filtr zaawansowany itd.
    I dla takiego przykładu:
    Excel - kopiowanie zawartości listy rozwijanej do kolumny
    mam:
    Excel - kopiowanie zawartości listy rozwijanej do kolumny

    Po zmianie np. płyta na płyta2, w kolumnie obok nie ma żadnych zmian. Zasilacz pojawia się dwa razy.
    Czy coś robię źle, czy to nie nigdy nie będzie zmieniać się automatycznie?
  • Moderator Programowanie
    Musiałbyś najpierw posortować dane w tabeli wg tej kolumny lub w samej kolumnie.
  • Poziom 20  
    posortować dane żeby np. zasilacz nie pojawił się dwa razy, czy żeby automatycznie się dodawało? Bo sortowanie zrobiłem i bez zmian
  • Moderator Programowanie
    Sprawdź, czy nie masz spacji na końcu. Dla Excela to nie wszystko jedno.
    Nie jestem pewien, czy to sortowanie w ogóle jest konieczne. Zaraz sprawdzę.

    Edit:
    Działa bez sortowania
    Excel - kopiowanie zawartości listy rozwijanej do kolumny
  • Poziom 20  
    Spacji nie mam, sprawdzałem to na oryginalnym raporcie i kilka razy na innych. Wprowadzałem dane ręcznie i też zawsze pierwszy wiersz był powtarzany. Więc to nie będzie wina błędnego tekstu.
  • Moderator Programowanie
    No tak. Ten pierwszy "zasilacz" u Ciebie Excel potraktował jako nagłówek kolumny :)
  • Poziom 20  
    No tak, to zrozumiałe, ale dlaczego jeśli zmienię nazwę z zasilacz np. na zasilacz2 to już w tej kolumnie nie ma zmian?Albo jeśli dodam inna rzecz w liście?
  • Moderator Programowanie
    To nie działa dynamicznie. Po każdej zmianie w kolumnie musisz operację powtórzyć.
    Można nagrać makro i powodować jego uruchomienie po każdej zmianie. Wygodnie, ale nie każdy lubi/chce makra w pliku.
  • Poziom 20  
    Stworzyłem makro na to filtrowanie:
    [rejestruj makro]
    Dane>Filtr>Filtr zaawansowany itd.
    Skończyłem, pojawiło się obok w kolumnie to co chciałem.
    [zatrzymanie rejestrowania]
    Wszystko gra...
    Jeśli nic nie zmienię i powtórzę makro to jest OK.
    Ale jeśli zmienię z płyta na płyta 2, odtworzę makro, to pokazuje błąd:
    Excel - kopiowanie zawartości listy rozwijanej do kolumny
    Ten błąd pokazuje się tylko jeśli zmienię nazwę na inną lub dodam.
    Co może być jeszcze nie tak?
  • Moderator Programowanie
    Wrzuć to makro na forum (w znacznikach code).
  • Poziom 20  
    Jeśli zrobię to ręcznie, to wszystko gra, ale jeśli nagrywam makro, i odtworzę to mam błąd.
    Treść makra:
    Code:
    Sub Makro9()
    
    '
    ' Makro9 Makro
    ' Makro zarejestrowane 20-03-2009, autor Marta
    '

    '
        ActiveCell.Offset(6, -1).Range("A1:A17").AdvancedFilter Action:=xlFilterCopy, _
            CopyToRange:=ActiveCell.Offset(5, 1).Range("A1"), Unique:=True
    End Sub
  • Moderator Programowanie
    Offset to przesunięcie (6, -1) o sześć wierszy w dół i jedną kolumnę w lewo. Raczej tutaj niepotrzebne. Spróbuj
    Code:
    Sub Makro_N()
    
    Application.ScreenUpdating = False
    Range("B1:B17").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Columns( _
            "D:D"), Unique:=True
    Application.ScreenUpdating = True
    End Sub

    Edit:
    Zmieniłem zakresy. Offset przecież...
  • Poziom 20  
    Działa świetnie.
    Zauważyłem też mój błąd, po kilku modyfikacjach przypadkowo przesunąłem tabelę do innej kolumny niż to było wpisane w makro. Poprawiłem to ale nadal nie działało.
    Wkleiłem Twój kod i działa doskonale.
    Czy takie makro może się wykonywać samo? czy muszę używać skrótów klawiszowych?
  • Moderator Programowanie
    Może "samo".
    W kod arkusza, w którym filtrujesz (nie w moduł) wklej
    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
    
    If Target.Column = 2 Then 'dla kolumny "B"
        Call Makro_N
    End If
    End Sub
  • Poziom 20  
    nie rozumiem, jak to w kod arkusza? w makro?
  • Moderator Programowanie
    Najprościej:
    U dołu ekranu, na zakładce z nazwą arkusza kliknij prawym p.m. i wybierz: wyświetl kod arkusza. Po otwarciu edytora wklej...
  • Poziom 20  
    a czy makro zapisuje się w pliku Excela? i przenosząc plik na inne komputery wszystko działa?
  • Pomocny post
    Moderator Programowanie
    Tak. Tyle, że w zależności od poziomu zabezpieczeń może być monit lub przy wysokim poziomie może nie działać makro/makra.
  • Poziom 20  
    Działa doskonale. Wielkie dzięki.