Dodawanie i usuwanie wierszy jest częścią codziennych wspólnych zadań podczas pracy z Excelem.
Pomimo, że można to łatwo zrobić z samego arkusza, czasami możesz chcieć użyć ścieżki VBA, aby usunąć wiersze w Excelu. Może to być usunięcie konkretnego wiersza, wielu wierszy w zaznaczeniu, usunięcie alternatywnych wierszy lub tych, które mają określoną wartość.
W tym poradniku pokażę Ci, jak usunąć wiersze w Excelu za pomocą VBA (wiele scenariuszy).
Zacznijmy więc!
Tutorial ten obejmuje:
Usuwanie całego wiersza za pomocą VBA
Aby usunąć cały wiersz w Excelu za pomocą VBA, należy użyć metody EntireRow.Delete.
Na przykład, jeśli chcesz usunąć cały pierwszy wiersz w arkuszu, możesz użyć poniższego kodu:
Sub DeleteEntireRow()Rows(1).EntireRow.DeleteEnd Sub
Powyższy kod najpierw określa wiersz, który ma zostać usunięty (co odbywa się poprzez podanie liczby w nawiasie), a następnie używa metody EntireRow.Delete, aby go usunąć.
Możesz również usunąć wiele wierszy, określając te wiersze w kodzie.
Na przykład poniższy kod usunie wiersze numer 1, 5 i 9 w arkuszu:
Sub DeleteEntireRow()Rows(9).EntireRow.DeleteRows(5).EntireRow.DeleteRows(1).EntireRow.DeleteEnd Sub
Powyższy kod wykorzystuje tę samą logikę, w której określa numery wierszy, a Excel usunie te wiersze jeden po drugim.
Usuń wszystkie wiersze w zaznaczeniu
W przypadku, gdy chcesz usunąć wszystkie wiersze w wybranym zakresie komórek, możesz użyć poniższego kodu makra VBA:
Sub DeleteEntireRow()Selection.EntireRow.DeleteEnd Sub
Powyższy kod stosuje metodę EntireRow.Delete do całego zaznaczenia.
Usuwanie alternatywnych wierszy (lub usuwanie co trzeciego/czwartego/n-tego wiersza)
Czasami możesz otrzymać zrzut danych, w którym co drugi wiersz (lub trzeci, czwarty lub N-ty wiersz) jest bezużyteczny i wymaga usunięcia.
Pracowałem kiedyś z danymi finansowymi, gdzie co drugi wiersz był pusty i musiał zostać usunięty.
To jest typ scenariusza, w którym VBA naprawdę błyszczy.
Poniżej znajduje się kod VBA, który przejdzie przez wszystkie wiersze w zaznaczeniu i usunie co drugi wiersz:
Sub DeleteAlternateRows()RCount = Selection.Rows.CountFor i = RCount To 1 Step -2 Selection.Rows(i).EntireRow.DeleteNext iEnd Sub
Pozwól mi wyjaśnić, jak działa ten kod VBA.
Po pierwsze, użyłem zmiennej RCount, aby uzyskać całkowitą liczbę wierszy w selekcji.
Następnie użyłem pętli For Next, aby uruchomić to tyle razy, ile jest wierszy. Na przykład, jeśli jest 12 wierszy, ta pętla zostanie uruchomiona od 12 do 1 (tj. 12 razy). Ważne jest, aby uruchomić to od ostatniego wiersza w selekcji do pierwszego, ponieważ nie chcemy, aby numery wierszy zmieniły się, gdy wiersz jest usuwany.
Krok -2 jest również używany, ponieważ musimy usunąć co drugi wiersz (od dołu do góry). W przypadku, gdy chcesz usunąć co trzeci wiersz, możesz użyć kroku -3.
Wewnątrz pętli VBA użyłem metody Selection.Rows(i).EntireRow.Delete, aby usunąć każdy kolejny wiersz.
Usuwanie pustych wierszy za pomocą VBA
Możesz również użyć metody EntireRow.Delete do usunięcia wszystkich pustych wierszy.
Poniżej znajduje się kod VBA, który zaznaczy puste komórki w wybranym zbiorze danych i usunie cały wiersz.
Sub DeleteBlankRows()Selection.SpecialCells(xlCellTypeBlanks).EntireRow.DeleteEnd Sub
Powyższy kod używa właściwości SpecialCells do zaznaczenia i usunięcia wszystkich komórek, które są puste. Jest to ta sama metoda, która pozwala nam również użyć okna dialogowego 'Go To Special' do wybrania wszystkich pustych komórek.
Po zidentyfikowaniu tych pustych komórek za pomocą właściwości SpecialCell, są one następnie usuwane za pomocą metody EntireRow.Delete.
Usuń wiersze z określonym słowem / wartością
Możesz również użyć prostego kodu VBA, aby przejść przez każdą komórkę w wybranym zakresie i usunąć wszystkie wiersze, w których komórka zawiera określony tekst lub wartość.
Na przykład, załóżmy, że masz zbiór danych i chcę usunąć wszystkie komórki, które mają tekst Drukarka w kolumnie 2 zaznaczenia.
Poniżej znajduje się kod, który to zrobi:
Sub DeleteRowswithSpecificValue()For i = Selection.Rows.Count To 1 Step -1If Cells(i, 2).Value = "Printer" ThenCells(i, 2).EntireRow.DeleteEnd IfNext iEnd Sub
Powyższy kod najpierw zlicza całkowitą liczbę wierszy w selekcji. To upewni się, że pętla jest uruchamiana tylko tyle razy. Następnie używa pętli 'For Next', aby przejść przez wszystkie komórki w kolumnie 2.
Konstrukcja IF THEN ELSE jest następnie używana do sprawdzenia wartości w każdej komórce w kolumnie 2. I w przypadku, gdy wartość / tekst pasuje do określonego tekstu (który jest 'Drukarka' w tym przykładzie).
W tym przykładzie sprawdziłem, czy tekst pasuje do określonego łańcucha, czy nie. Możesz również zrobić to z wartościami. Na przykład, możesz usunąć wszystkie wiersze, w których wartość sprzedaży jest mniejsza niż 1000 lub większa niż 1000.
Uwaga: Ważną rzeczą do zauważenia jest to, że pętla działa od Selection.Rows.Count To 1, aby upewnić się, że kiedy wiersz jest usuwany, nie ma to wpływu na wiersze powyżej niego.
Jak używać tego kodu VBA
Teraz pokażę Ci, jak używać wszystkich kodów wymienionych w tym poradniku, aby usunąć cały wiersz.
Trzeba skopiować i wkleić te kody do modułu w Edytorze Excel VB. Po skopiowaniu tych kodów, możesz uruchomić kody makr.
Poniżej znajdują się kroki, aby skopiować i wkleić te kody VBA w module:
- Przytrzymaj klawisz ALT i naciśnij klawisz F11 (lub Function + Option + F11 w Mac). Spowoduje to otwarcie Edytora VB
- W Edytorze VB, po lewej stronie znajduje się eksplorator projektu. Jeśli go nie widzisz, przejdź do opcji Widok, a następnie kliknij na Eksplorator projektu.
- Kliknij prawym przyciskiem myszy na dowolny obiekt w Eksploratorze projektu (dla skoroszytu, w którym chcesz uruchomić kod).
- Przejdź do Wstaw, a następnie kliknij na Moduł. Spowoduje to wstawienie nowego modułu dla skoroszytu
- Kopiuj i wklej powyższe kody w module.
Aby uruchomić te kody, możesz umieścić kursor w dowolnym miejscu kodu (który chcesz uruchomić) i naciśnij klawisz F5 (lub kliknij na zielony trójkąt na pasku narzędzi VBA).
Napisałem również szczegółowy samouczek na temat różnych sposobów uruchamiania makr VBA w Excelu.
Więc to były niektóre kody VBA, których możesz użyć do usunięcia całych wierszy w programie Excel (w różnych scenariuszach). Ta sama logika może być również zastosowana w przypadku, gdy chcesz usunąć kolumny zamiast wierszy (z odpowiednim dostosowaniem w przykładach kodu).
Mam nadzieję, że ten poradnik okazał się przydatny!
Mogą Ci się również spodobać następujące samouczki Excela:
- Excel VBA Autofiltr: Kompletny przewodnik z przykładami
- Usuwanie wierszy na podstawie wartości komórki (lub warunku) w Excelu
- Wstawianie pustego wiersza po każdym wierszu w Excelu (lub co N-ty wiersz)
- Jak szybko ukryć KOLUMNY w Excelu