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 - kopiowanie zawartości listy rozwijanej do kolumny

karolczyzycki 20 Mar 2009 13:40 10235 23
  • #1 20 Mar 2009 13:40
    karolczyzycki

    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?

    0 23
  • #2 20 Mar 2009 16:32
    adamas_nt
    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.

    0
  • #3 20 Mar 2009 16:39
    marek003
    Poziom 40  

    Ja też nie do końca łapie co chcesz zrobić. Zapytam jeszcze ilu składnikowa jest lista wszystkich części?

    0
  • #4 20 Mar 2009 18:30
    karolczyzycki

    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

    0
  • #5 20 Mar 2009 18:35
    adamas_nt
    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.

    0
  • #6 20 Mar 2009 19:01
    karolczyzycki

    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?

    0
  • #7 20 Mar 2009 19:10
    adamas_nt
    Moderator Programowanie

    Musiałbyś najpierw posortować dane w tabeli wg tej kolumny lub w samej kolumnie.

    0
  • #8 20 Mar 2009 19:12
    karolczyzycki

    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

    0
  • #9 20 Mar 2009 19:16
    adamas_nt
    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

    0
  • #10 20 Mar 2009 19:18
    karolczyzycki

    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.

    0
  • #11 20 Mar 2009 19:24
    adamas_nt
    Moderator Programowanie

    No tak. Ten pierwszy "zasilacz" u Ciebie Excel potraktował jako nagłówek kolumny :)

    0
  • #12 20 Mar 2009 19:33
    karolczyzycki

    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?

    0
  • #13 20 Mar 2009 19:37
    adamas_nt
    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.

    0
  • #14 20 Mar 2009 19:59
    karolczyzycki

    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?

    0
  • #15 20 Mar 2009 20:10
    adamas_nt
    Moderator Programowanie

    Wrzuć to makro na forum (w znacznikach code).

    0
  • #16 20 Mar 2009 20:14
    karolczyzycki

    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

    0
  • #17 20 Mar 2009 20:23
    adamas_nt
    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ż...

    0
  • #18 20 Mar 2009 20:34
    karolczyzycki

    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?

    0
  • #19 20 Mar 2009 20:39
    adamas_nt
    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

    0
  • #20 20 Mar 2009 20:43
    karolczyzycki

    Poziom 20  

    nie rozumiem, jak to w kod arkusza? w makro?

    0
  • #21 20 Mar 2009 20:48
    adamas_nt
    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...

    0
  • #22 20 Mar 2009 20:51
    karolczyzycki

    Poziom 20  

    a czy makro zapisuje się w pliku Excela? i przenosząc plik na inne komputery wszystko działa?

    0
  • Pomocny post
    #23 20 Mar 2009 20:54
    adamas_nt
    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.

    0
  • #24 20 Mar 2009 21:05
    karolczyzycki

    Poziom 20  

    Działa doskonale. Wielkie dzięki.

    0