Note: The other languages of the website are Google-translated. Back to English

Jak automatycznie ponownie zastosować automatyczne filtrowanie po zmianie danych w programie Excel?

W programie Excel po zastosowaniu Filtruj do filtrowania danych, wynik filtrowania nie zostanie automatycznie zmieniony wraz ze zmianami danych w filtrowanych danych. Na przykład, kiedy filtruję wszystkie jabłka z danych, teraz zmieniam jedną z przefiltrowanych danych na BBBBBB, ale wynik nie zostanie zmieniony tak dobrze, jak pokazano na zrzucie ekranu. W tym artykule omówię, jak ponownie zastosować automatyczne filtrowanie po zmianie danych w programie Excel.

doc auot odśwież filtr 1

Automatycznie ponownie zastosuj automatyczne filtrowanie, gdy dane zmieniają się wraz z kodem VBA


strzałka niebieski prawy bąbelek Automatycznie ponownie zastosuj automatyczne filtrowanie, gdy dane zmieniają się wraz z kodem VBA

Zwykle możesz odświeżyć dane filtru, klikając opcję Zastosuj ponownie ręcznie, ale tutaj wprowadzę kod VBA, abyś mógł odświeżyć dane filtru automatycznie po zmianie danych, wykonaj następujące czynności:

1. Przejdź do arkusza roboczego, dla którego chcesz automatycznie odświeżać filtr po zmianie danych.

2. Kliknij prawym przyciskiem myszy kartę arkusza i wybierz Wyświetl kod z menu kontekstowego w wyskakującym pliku Microsoft Visual Basic for Applications okno, skopiuj i wklej następujący kod w pustym oknie modułu, patrz zrzut ekranu:

Kod VBA: Automatycznie zastosuj ponownie filtr po zmianie danych:

Private Sub Worksheet_Change(ByVal Target As Range)
   Sheets("Sheet3").AutoFilter.ApplyFilter
End Sub

doc auot odśwież filtr 2

Uwagi: W powyższym kodzie, Arkusz 3 to nazwa arkusza z automatycznym filtrem, którego używasz, zmień go zgodnie z potrzebami.

3. Następnie zapisz i zamknij to okno kodu, teraz, gdy zmienisz filtrowane dane, plik Filtruj funkcja zostanie automatycznie odświeżona od razu, patrz zrzut ekranu:

doc auot odśwież filtr 3


Najlepsze narzędzia biurowe

Kutools dla programu Excel rozwiązuje większość problemów i zwiększa produktywność o 80%

  • Ponowne użycie: Szybko włóż złożone wzory, wykresy i wszystko, czego używałeś wcześniej; Szyfruj komórki z hasłem; Utwórz listę mailingową i wysyłaj e-maile ...
  • Pasek Super Formula (łatwo edytować wiele wierszy tekstu i formuły); Układ do czytania (łatwe odczytywanie i edytowanie dużej liczby komórek); Wklej do filtrowanego zakresu...
  • Scal komórki / wiersze / kolumny bez utraty danych; Podziel zawartość komórek; Połącz zduplikowane wiersze / kolumny... Zapobiegaj zduplikowanym komórkom; Porównaj zakresy...
  • Wybierz Duplikat lub Unikalny Wydziwianie; Wybierz puste wiersze (wszystkie komórki są puste); Super Find i Fuzzy Find w wielu zeszytach ćwiczeń; Losowy wybór ...
  • Dokładna kopia Wiele komórek bez zmiany odwołania do formuły; Automatyczne tworzenie odniesień do wielu arkuszy; Wstaw punktory, Pola wyboru i nie tylko ...
  • Wyodrębnij tekst, Dodaj tekst, Usuń według pozycji, Usuń przestrzeń; Tworzenie i drukowanie podsumowań stronicowania; Konwertuj zawartość komórek i komentarze...
  • Super filtr (zapisz i zastosuj schematy filtrów do innych arkuszy); Zaawansowane sortowanie według miesiąca / tygodnia / dnia, częstotliwości i innych; Specjalny filtr pogrubieniem, kursywą ...
  • Połącz skoroszyty i arkusze robocze; Scal tabele na podstawie kluczowych kolumn; Podziel dane na wiele arkuszy; Konwersja wsadowa xls, xlsx i PDF...
  • Ponad 300 zaawansowanych funkcji. Obsługuje Office / Excel 2007-2021 i 365. Obsługuje wszystkie języki. Łatwe wdrażanie w przedsiębiorstwie lub organizacji. Pełne funkcje 30-dniowa bezpłatna wersja próbna. 60-dniowa gwarancja zwrotu pieniędzy.
karta kte 201905

Karta Office wprowadza interfejs z zakładkami do pakietu Office i znacznie ułatwia pracę

  • Włącz edycję i czytanie na kartach w programach Word, Excel, PowerPoint, Publisher, Access, Visio i Project.
  • Otwieraj i twórz wiele dokumentów w nowych kartach tego samego okna, a nie w nowych oknach.
  • Zwiększa produktywność o 50% i redukuje setki kliknięć myszką każdego dnia!
officetab dół
Sortuj komentarze według
Komentarze (36)
Znamionowy 5 z 5 · 1 oceny
Ten komentarz został zminimalizowany przez moderatora na stronie
cześć, jak mogę to wszystko wykorzystać w finansach Google? Tks
Ten komentarz został zminimalizowany przez moderatora na stronie
Fajnie… naprawdę tego potrzebuję
Ten komentarz został zminimalizowany przez moderatora na stronie
Chcę, aby zmiana na jednym arkuszu powodowała automatyczne filtrowanie wielu innych arkuszy, jak mogę zmienić ten kod? Np.: ArkuszA ulega zmianie, co powoduje, że Arkusz1, Arkusz2 i Arkusz3 stosują swój autofiltr. Dzięki!
Ten komentarz został zminimalizowany przez moderatora na stronie
Robię to dla frontu w arkuszu, jeśli komórka jest ustawiona na =sheet1!E6. Nie zastosuje filtra, gdy się zmieni. Jeśli zmienię numer na tylnej stronie, dostosuję przód, ale nie filtruje. Jeśli dostosujesz formułę, aby filtrować kryteria, zastosuje się ponownie. Co mogę zrobić?
Ten komentarz został zminimalizowany przez moderatora na stronie
Użyj tego
Private Sub Work_Change (ByVal Target As Range)
Activesheet.AutoFilter.ApplyFilter
End Sub
Ten komentarz został zminimalizowany przez moderatora na stronie
W ogóle nie mogę sprawić, żeby to dla mnie zadziałało. Próbuję wziąć z arkusza wzorcowego i kazać mu wziąć tylko te zadania, które dotyczą określonych kierowników projektów na każdej karcie, która jest z ich imionami. Chcę również, aby automatycznie się odświeżał, gdy wprowadzę zmiany.
Ten komentarz został zminimalizowany przez moderatora na stronie
to polecenie wszystkie fałszywe nic nie rób. całkowicie spróbować, ale bez sensu.
Ten komentarz został zminimalizowany przez moderatora na stronie
Działa świetnie i oszczędza mi dużo czasu i kłopotów.. Naprawdę świetna wskazówka.. Wielkie dzięki za pomoc
Ten komentarz został zminimalizowany przez moderatora na stronie
To rozwiązanie sprawdza się doskonale. Dzięki za napisanie tego! Jeśli ktoś ma problemy, jest kilka rzeczy do rozważenia.

Najpierw zdarzenie Worksheet_Change jest wywoływane dla poszczególnych arkuszy. Oznacza to, że jeśli masz wiele arkuszy z filtrami, które musisz zaktualizować, musisz odpowiedzieć na wszystkie te zdarzenia. Jeden podprogram Worksheet_Change dla każdego arkusza, a nie jeden podprogram dla całego skoroszytu (jeden wyjątek — patrz uwaga poniżej).

Po drugie, i jako następca pierwszego, kod musi być umieszczony w module kodu specyficznym dla arkusza, który ma być monitorowany. Łatwo jest (nieumyślnie) przełączać moduły kodu po przejściu do edytora VB, więc należy uważać, aby umieścić go w arkuszu, który chcesz monitorować pod kątem zmian danych.

Po trzecie, jest to niepotwierdzone, ale prawdopodobnie jest to błąd. W przykładzie zastosowano nazwy arkuszy „Arkusz1”, „Arkusz2” itd. Jeśli zmieniłeś nazwy arkuszy, może być konieczne zaktualizowanie kodu. Zauważ, że w przykładzie Sheet7 nadano nazwę „dfdf”. Jeśli chcesz zaktualizować tam filtr, musisz użyć;
Arkusze("dfdf").AutoFilter.ApplyFilter
nie;
Arkusze("Arkusz7").AutoFilter.ApplyFilter

Dobrym pomysłem może być zaktualizowanie artykułu, w tym przykład z arkuszem o zmienionej nazwie.


Wreszcie, jeśli chcesz monitorować jeden arkusz pod kątem zmian danych, ale aktualizować filtry w wielu arkuszach, potrzebujesz tylko jednego podprogramu, umieszczonego w module kodu arkusza, który monitorujesz. Kod będzie wyglądał mniej więcej tak;

# (kod musi być umieszczony w arkuszu, aby monitorować zmiany danych)
Prywatny Sub Worksheet_Change (ByVal Target As Range)
Arkusze("Arkusz1").AutoFilter.ApplyFilter
Arkusze("Arkusz2").AutoFilter.ApplyFilter
Arkusze("Arkusz3").AutoFilter.ApplyFilter
Arkusze("Arkusz4").AutoFilter.ApplyFilter
End Sub
Ten komentarz został zminimalizowany przez moderatora na stronie
Część Mike,
Dziękuję za szczegółowe wyjaśnienie.
Ten komentarz został zminimalizowany przez moderatora na stronie
Świetne wyjaśnienie, dziękuję.

Ale jak uruchomić Sheets("Sheet3").AutoFilter.ApplyFilter po utworzeniu nowego arkusza?
Ponieważ nie mogę napisać kodu, o którym wspomniałeś, na arkuszu, który jeszcze nie istnieje
Ten komentarz został zminimalizowany przez moderatora na stronie
Wielkie dzięki!
Ten komentarz został zminimalizowany przez moderatora na stronie
działa jak mistrz i jest tak prosty. dziękuję bardzo!
Ten komentarz został zminimalizowany przez moderatora na stronie
Wydaje się to świetne. Czy możesz mi powiedzieć, jak zrobić to samo w przypadku sortowania, a nie filtrowania?
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Chris,
Być może poniższy artykuł może rozwiązać Twój problem, zobacz:

https://www.extendoffice.com/documents/excel/2592-excel-auto-sort-by-value.html

Proszę spróbować!
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, działa to świetnie, ale tylko przy ręcznej zmianie danych w tabeli.

Mam filtrowaną tabelę w stylu „dziesięciu najlepszych / liderów”, która jest wypełniana z danych wejściowych w osobnym arkuszu (w rzeczywistości dane przechodzą przez 3 arkusze przed dotarciem do tabeli). Gdy dane w arkuszu wprowadzania danych zostaną zmienione, dane w tabeli liderów zostaną zaktualizowane, jednak filtr nie jest odświeżany automatycznie.
Jakieś pomysły, jak to zrobić?
Bardzo zobowiązany.
Alex
Ten komentarz został zminimalizowany przez moderatora na stronie
Mam ten sam problem. Czy ktoś może nam pomóc?
Ten komentarz został zminimalizowany przez moderatora na stronie
Mam ten sam problem. Próbuję automatycznie filtrować arkusz 2, który zawiera dane pochodzące z arkusza 1. Działa to tylko wtedy, gdy zmienię dane w arkuszu 2, a nie w arkuszu 1.
Masz jakieś przemyślenia, dlaczego to nie działa i jak to naprawić?
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, wydaje się, że to działa świetnie, ale mam problemy, gdy w tym samym arkuszu (zakładce) znajduje się więcej niż jeden filtr. Przekonwertowałem zakres komórek na tabelę, aby umożliwić oddzielne i wiele filtrów w tym samym arkuszu. Ten przykład wydaje się aktualizować tylko jedną z tabel/filtrów. Jakieś sugestie dotyczące aktualizacji WSZYSTKICH tabel/filtrów w arkuszu?

Wielkie dzięki,

Tomek
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Tom,
Kod w tym artykule działa dobrze dla wielu tabel w arkuszu, wystarczy nacisnąć klawisz Enter po zmianie danych zamiast klikać do innej komórki.
Proszę spróbować.
Ten komentarz został zminimalizowany przez moderatora na stronie
Terima Kasih

sangat membantu
Ten komentarz został zminimalizowany przez moderatora na stronie
Ten komentarz został zminimalizowany przez moderatora na stronie
Genialny i prosty w wykonaniu. Dzięki wielkie!
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć,

Ten kod działa świetnie, wielkie dzięki.

Mam jednak z tym jeden mały problem - jeśli zmienię wartości w dowolnej komórce, która nie jest częścią tabeli, pojawia się błąd Runtime mówiący:

"Błąd czasu wykonywania '91':

Zmienna obiektu lub Nie ustawiono zmiennej bloku"


Mam opcje debugowania lub zakończenia, opcja Kontynuuj jest wyszarzona. Mogę kliknąć „Zakończ”, a kod nadal działa, jednak bardzo denerwujące jest radzenie sobie z tym wyskakującym okienkiem po każdej zmianie.

Czy ktoś ma podobne doświadczenie lub sugestię, jak to posortować?

Dzięki!
Ten komentarz został zminimalizowany przez moderatora na stronie
Witaj Dawid,
Aby rozwiązać swój problem, możesz zastosować następujący kod:

Prywatny Sub Worksheet_Change (ByVal Target As Range)
On Error Resume Next
Arkusze("Arkusz3").AutoFilter.ApplyFilter
End Sub

Spróbuj, mam nadzieję, że ci pomoże!
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Skyyang,


Wdrożyłem Twoje rozwiązanie i rzeczywiście zostało naprawione.

Wielkie dzięki!
Ten komentarz został zminimalizowany przez moderatora na stronie
Witam miałem ten sam problem, wkleiłem nowy kod i zmieniłem nazwę arkusza ale potem nic się nie dzieje, filtr się nie aktualizuje
Ten komentarz został zminimalizowany przez moderatora na stronie
ten sam problem również tutaj, jakieś zaktualizowane rozwiązanie?
Ten komentarz został zminimalizowany przez moderatora na stronie
Nie mogę zmusić tego do pracy w biurze 365
jakieś sugestie
Ten komentarz został zminimalizowany przez moderatora na stronie
Witam, bardzo dziękuję za pomoc. Coś mi nie pasuje. Oto historia.

Arkusz1 zawiera zmienne dane. Sheet3 zawiera dane statyczne i filtr. Kryteria filtrowania w „Arkuszu 3” pochodzą z Arkusza1. Arkusz 1 zawiera dane pochodzące z przefiltrowanych wyników w Arkuszu3.

Arkusz3 ma kod:

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Range("A1:U14").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("A22:U23"), CopyToRange:=Range("A25:U26"), Unique:=False
End Sub

Działa świetnie, jeśli zrobię coś na Sheet3. Bez problemów. Dziękuję Ci!

Na początku miałem kod na Sheet1:

Prywatny Sub Worksheet_Change (ByVal Target As Range)
Arkusze("Arkusz3").AutoFilter.ApplyFilter
End Sub

Co spowodowało błąd „Runtime error 91, Object Variable or With Block not Set”.

Zmieniłem kod na podstawie komentarzy na:

Prywatny Sub Worksheet_Change (ByVal Target As Range)
On Error Resume Next
Arkusze("Arkusz3").AutoFilter.ApplyFilter
End Sub

Teraz nie otrzymuję błędu, ale dane w Sheet3, a zatem Sheet1 nie zmieniają się. Innymi słowy, przypadek zastosowania filtra do Sheet3 nie występuje, gdy wprowadzam zmianę w Sheet1. Nie ma znaczenia, czy uderzę lub kliknij inną komórkę po zmianie komórki kryteriów filtra Sheet3 ustawionej w Sheet1.

Nawiasem mówiąc, spodziewam się, że gdybym chciał mieć wiele komórek w Arkuszu 1, które powodowały filtry w Arkuszach 4 i 5 oprócz Arkusza 3, potrzebowałbym kodu w Arkuszu 1, aby przeczytać:

Prywatny Sub Worksheet_Change (ByVal Target As Range)
On Error Resume Next
Arkusze("Arkusz3").AutoFilter.ApplyFilter
Arkusze("Arkusz4").AutoFilter.ApplyFilter
Arkusze("Arkusz5").AutoFilter.ApplyFilter
End Sub

Dzięki jeszcze raz!
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć,

To świetny kawałek kodu, dziękuję. Jedynym problemem, jaki mam, jest to, że używam listy rozwijanej na osobnym arkuszu wykresu. Jeśli ręcznie zmienię wartość w komórce powiązanej z menu rozwijanym, zadziała. Ale kiedy próbuję po prostu użyć rozwijanego menu, nie aktualizuje się. jakieś pomysły?
Ten komentarz został zminimalizowany przez moderatora na stronie
W rzeczywistości mam dane z innego pliku Excela, który został zaimportowany do arkusza Excela o nazwie „Baza danych”. Następnie importuję te dane w tym samym pliku Excel, ale w innym arkuszu Excel „Przegląd”. Chcę, aby po zmianie danych w oryginalnym źródle filtr został zastosowany w arkuszu „Przegląd”. Z góry dziękuję za osobę, która może mi pomóc :). PS nie może używać VBA w pierwszym arkuszu programu Excel
Nie ma tu jeszcze żadnych komentarzy
Pokaż więcej
Zostaw swój komentarz
Publikowanie jako gość
×
Oceń ten post:
0   Postacie
Sugerowane lokalizacje

Bądż na bieżąco

Prawa autorskie © 2009 - www.extendoffice.com. | Wszelkie prawa zastrzeżone. Zasilany przez ExtendOffice, | Mapa strony
Microsoft i logo Office są znakami towarowymi lub zastrzeżonymi znakami towarowymi Microsoft Corporation w Stanach Zjednoczonych i / lub innych krajach.
Chronione przez Sectigo SSL