logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Automatyczne filtrowanie kolumn pionowych po wpisaniu numeru tygodnia w Excelu

schondzynski 12 Gru 2023 18:35 384 9
REKLAMA
  • #1 20858322
    schondzynski
    Poziom 1  
    Posty: 1
    Dzień dobry wszystkim,

    Mam pytanie jak to zrobić automatyczny filtr po wpisaniu numeru tygodnia żeby filtrowało kolumny pionowe z zakresu tylko tego tygodnia, po wpisaniu innego
    tygodnia usuwało filtr z poprzedniego tygodnia, dane do przefiltrowania to częstotliwość przeglądów czyli MC, KW, P, i ROK.
    Załączniki:
    • Nowy Arkusz programu Microsoft Excel (3).xlsx (9.33 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #2 20858449
    Maciej Gonet
    Specjalista - VBA, Excel
    Posty: 2207
    Pomógł: 824
    Ocena: 481
    Nie wiem, czy dobrze zrozumiałem. Filtrowane mają być tylko kolumny, czy również wiersze?
    Najlepiej zawsze pokazać w załączniku oczekiwany wynik.
    Napisałem makro zdarzeniowe ukrywające kolumny z tygodniami z wyjątkiem tej wpisanej w polu "LICZBA TYGODNIA". Makro jest umieszczone w module arkusza.
    Pusta komórka w polu "LICZBA TYGODNIA" odkrywa wszystkie kolumny. Liczba spoza przedziału [1..52] lub tekst pozostawia kolumny bez zmiany.
    Kod: VBScript
    Zaloguj się, aby zobaczyć kod
    Załączniki:
    • Filtr_tygodnie.zip (13.46 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #3 20858519
    chondzyk
    Poziom 12  
    Posty: 109
    Ocena: 16
    Dzięki śliczne masz 1000 punktów a można jeszcze usunąć puste, i żeby nie trzeba było zatwierdzać enterem
  • #4 20858579
    Maciej Gonet
    Specjalista - VBA, Excel
    Posty: 2207
    Pomógł: 824
    Ocena: 481
    Co to znaczy "usunąć puste"?
    Czy chodzi o ukrycie wierszy, w których są puste komórki w tej wybranej kolumnie, czy o coś innego?
    Co to znaczy, żeby "nie trzeba było zatwierdzać enterem"? A czym? W jaki sposób miałby być dokonany ten wybór tygodnia?
  • REKLAMA
  • #5 20859059
    chondzyk
    Poziom 12  
    Posty: 109
    Ocena: 16

    Dzień dobry,

    tak właśnie chodzi mi o usunięcie pustych komórek.

    Dodano po 3 [minuty]:

    Numer tygodnia będzie kopiowany z innego arkusza, a zawartość po filtrowaniu będzie przenoszona na inny arkusz, dlatego zatwierdzanie wyboru jest dość kłopotliwe, bo trzeba ten arkusz otworzyć i zatwierdzić.
  • #6 20859352
    Maciej Gonet
    Specjalista - VBA, Excel
    Posty: 2207
    Pomógł: 824
    Ocena: 481
    chondzyk napisał:
    chodzi mi o usunięcie pustych komórek.
    Zwracam uwagę, że usuwanie jest nieodwracalne (a przynajmniej odwracanie usuwania jest niezbyt wygodne).
    Cały opis jest trudny do zrozumienia. Jeśli celem jest skopiowanie wybranego fragmentu arkusza, to po co to usuwanie, czy ukrywanie?
    Rozumiem, że będzie to jakieś działanie powtarzalne, więc na końcu powinien być odtworzony stan początkowy, żeby można było proces powtórzyć.

    Opisz po kolei cały proces, wskazując co będzie robione ręcznie, a co programowo.

    chondzyk napisał:
    Numer tygodnia będzie kopiowany z innego arkusza, a zawartość po filtrowaniu będzie przenoszona na inny arkusz,
    Procedura może być inicjowana zdarzeniem, dlatego między innymi istotny jest precyzyjny opis kolejnych kroków postępowania.
  • REKLAMA
  • #7 20859410
    chondzyk
    Poziom 12  
    Posty: 109
    Ocena: 16
    Nie tyle chodzi o usuwanie komórek a o filtrowanie z ukryciem pustych, ten arkusz będzie tylko do zmiany częstotliwości w danym tygodniu.
    Tydzień będzie wpisywany w innym arkuszu, dane po filtracji przenoszone do innego arkusza, w tym arkuszu chciałbym żeby wszystko odbywało się automatycznie.
  • #8 20859557
    Maciej Gonet
    Specjalista - VBA, Excel
    Posty: 2207
    Pomógł: 824
    Ocena: 481
    Do poprzedniego kodu dołożyłem ukrywanie wierszy.

    Ponieważ jest to procedura zdarzeniowa, może być również uruchamiana makrem.
    Jeśli jakiś kod wpisze do komórki A3 numer tygodnia, to również ta procedura się uruchomi (nie trzeba naciskać Enter). Także gdy ręcznie wkleisz do tej komórki jakąś liczbę, również nie trzeba Enter.

    Ponieważ nie chcesz podać dokładnego opisu procesu, to z mojej strony tyle.

    Kod: VBScript
    Zaloguj się, aby zobaczyć kod
    Załączniki:
    • Filtr_tygodnie2.zip (14.51 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #9 20860676
    chondzyk
    Poziom 12  
    Posty: 109
    Ocena: 16
    Dzień dobry,

    wszystko fajnie chodzi, ale mam problem jeżeli narzucam wartość komórki A3 z arkusza 1 filtr nie działa, przy próbie kopiowania wynikowego filtru kopiuje się cały arkusz, bo kolumny nie są ukrywane tylko zwijane, możesz spojrzeć proszę.
    Załączniki:
    • Filtr_tygodnie.7z (15.49 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #10 20861785
    Maciej Gonet
    Specjalista - VBA, Excel
    Posty: 2207
    Pomógł: 824
    Ocena: 481
    Najpierw napisałeś
    Cytat:
    po wpisaniu numeru tygodnia
    , później
    Cytat:
    Numer tygodnia będzie kopiowany z innego arkusza
    , więc zrozumiałem, że będzie następować zmiana w komórce A3, dlatego zaproponowałem użycie zdarzenia Change do wywołania makra.
    Teraz okazuje się, że w A3 jest formuła, więc zdarzenie Change w tej komórce nie występuje.

    Trzeba podawać precyzyjne opisy, bo potem niepotrzebnie wydłuża się czas na uzyskanie zadowalającej odpowiedzi.

    W tym przypadku wg przykładu zmiana (Change) następuje w komórce C6 w Arkuszu 1. Wobec tego jedno z możliwych rozwiązań, to przesunięcie procedury obsługi zdarzenia do tamtego arkusza i sprawdzanie komórki C6 zamiast A3.
    Ten wariant jest w załączniku pod nazwą "Filtr_tygodnie2".

    Inny wariant rozwiązania może wykorzystywać zdarzenie Calculate, czyli przeliczenie arkuszy. Wartość komórki A3 z arkusza Dane zapamiętujemy w zmiennej statycznej KomA3 i jeśli po przeliczeniu skoroszytu stwierdzimy, że wartość ta uległa zmianie wykonujemy akcję ukrywania kolumn i wierszy jak poprzednio (wywołując przygotowany wcześniej kod). Wykorzystałem obsługę zdarzenia Calculate na poziomie skoroszytu, uwzględniając potencjalnie możliwe odwołania do różnych arkuszy.
    Ten wariant jest w załączniku pod nazwą "Filtr_tygodnie3". Proszę zwrócić uwagę na zmianę w zdarzeniu Change z Private na Public.
    Załączniki:
    • Filtr_tygodnie3.zip (35.52 KB) Musisz być zalogowany, aby pobrać ten załącznik.

Podsumowanie tematu

✨ Dyskusja dotyczy automatycznego filtrowania kolumn w Excelu na podstawie numeru tygodnia. Użytkownik poszukuje rozwiązania, które umożliwi filtrowanie danych dotyczących częstotliwości przeglądów (MC, KW, P, ROK) po wpisaniu numeru tygodnia w komórce A3. Odpowiedzi obejmują propozycje użycia makr do ukrywania kolumn oraz wierszy z pustymi komórkami, a także omówienie problemów związanych z kopiowaniem danych po filtracji. Użytkownicy sugerują, aby proces był automatyczny, bez potrzeby potwierdzania zmian, co wymaga precyzyjnego opisu działania makr. Wskazano również na konieczność dostosowania kodu do sytuacji, gdy wartość w A3 jest wynikiem formuły, co wpływa na działanie zdarzenia Change.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA