Microsoft Excel oferuje funkcję filtrowania danych, która jest niezwykle przydatna w analizowaniu dużych zbiorów informacji. Nawet jeśli nie posiadasz zaawansowanej wiedzy technicznej dotyczącej tworzenia baz danych, ta opcja może okazać się bardzo pomocna. Filtry pozwalają na selekcję danych w kolumnach poprzez ich uwzględnianie lub wykluczanie. Ich działanie obejmuje również wartości danych w odpowiednich wierszach. Należy jednak pamiętać, że filtry nie aktualizują się automatycznie. W przypadku zmiany wartości w przefiltrowanej kolumnie, na skutek ręcznej edycji lub zastosowania formuły, konieczne jest ponowne zastosowanie filtrów. Istnieje jednak prosty fragment kodu, który umożliwia aktualizację przefiltrowanych kolumn na bieżąco.
Aby użyć tego kodu, konieczne będzie włączenie makr oraz zapisanie pliku Excela w formacie obsługującym makra (.XLSM). W tym celu przejdź do zakładki „Plik”, wybierz „Zapisz jako” i w oknie dialogowym wybierz „Skoroszyt programu Excel z włączoną obsługą makr”.
Kolejnym krokiem jest wybranie arkusza, na którym zastosowałeś filtry. Kliknij na niego prawym przyciskiem myszy i wybierz opcję „Wyświetl kod” z menu kontekstowego.
Pojawi się okno Microsoft Visual Basic, w którym znajdziesz aktualny arkusz Excela. Wklej poniższy kod w oknie kodu.
Private Sub Worksheet_Change(ByVal Target As Range) If Me.FilterMode = True Then With Application .EnableEvents = False .ScreenUpdating = False End With With ActiveWorkbook .CustomViews.Add ViewName:="Mine", RowColSettings:=True Me.AutoFilterMode = False .CustomViews("Mine").Show .CustomViews("Mine").Delete End With With Application .EnableEvents = True .ScreenUpdating = True End With End If End Sub
Po zapisaniu pliku, upewnij się, że jest on w formacie obsługującym makra. Jeśli nie, pojawi się komunikat z prośbą o dokonanie tej zmiany. Zapisany plik zostanie utworzony jako kopia, co oznacza, że nie nadpisze on aktualnego pliku.
Po dodaniu kodu, każda zmiana w przefiltrowanej kolumnie automatycznie zaktualizuje dane według ustalonych kryteriów. Ten fragment kodu został opracowany przez użytkownika Sorina na platformie Stack Exchange.