Jak usunąć cały wiersz w programie Excel za pomocą VBA (przykłady)

Dodawanie i usuwanie wierszy jest częścią codziennych typowych zadań podczas pracy z programem Excel.

Chociaż możesz to łatwo zrobić z samego arkusza roboczego, czasami możesz chcieć użyć trasy VBA do usunięcia wierszy w programie Excel. Może to być usunięcie określonego wiersza, wielu wierszy w zaznaczeniu, usunięcie wierszy alternatywnych lub tych, które mają w nim określoną wartość.

W tym samouczku pokażę, jak usuwać wiersze w Excelu za pomocą VBA (wiele scenariuszy).

Więc zacznijmy!

Usuń cały wiersz za pomocą VBA

Aby usunąć cały wiersz w programie Excel przy użyciu VBA, musisz 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() Wiersze(1).EntireRow.Delete Koniec Sub

Powyższy kod najpierw określa wiersz, który należy usunąć (co odbywa się przez określenie liczby w nawiasie), a następnie używa metody EntireRow.Delete, aby go usunąć.

Możesz również usunąć wiele wierszy, określając je w kodzie.

Na przykład poniższy kod usunie wiersze o numerach 1, 5 i 9 w arkuszu:

Sub DeleteEntireRow() Rows(9).EntireRow.Delete Rows(5).EntireRow.Delete Rows(1).EntireRow.Delete Koniec Sub

Powyższy kod wykorzystuje tę samą logikę, w której określa numery wierszy, a program Excel usunie te wiersze jeden po drugim.

WAŻNE: Kiedy usuwasz wiersze z czymś podobnym do powyższego kodu, pamiętaj, aby rozpocząć usuwanie od dołu, a następnie iść w górę. Na przykład, jeśli zaczniesz od góry i najpierw usuniesz wiersz 1, wszystkie wiersze poniżej zostaną przesunięte o jeden wiersz w górę, a numeracja będzie wyłączona (ponieważ wiersz 5 stanie się wierszem 4 itd.)

Usuń wszystkie wiersze w zaznaczeniu

Jeśli chcesz usunąć wszystkie wiersze z wybranego zakresu komórek, możesz użyć poniższego kodu makra VBA:

Sub DeleteEntireRow() Selection.EntireRow.Delete End Sub

Powyższy kod dotyczy metody EntireRow.Delete do całego zaznaczenia.

Usuń alternatywne wiersze (lub Usuń co trzeci/czwarty/N-ty wiersz)

Czasami możesz otrzymać zrzut danych, w którym co drugi wiersz (lub trzeci, czwarty lub N-ty wiersz) jest bezużyteczny i musi zostać usunięty.

Kiedyś pracowałem z danymi finansowymi, gdzie co drugi wiersz był pusty i musiał zostać usunięty.

To jest rodzaj 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.Count For i = RCount do 1 Krok -2 Selection.Rows(i).EntireRow.Delete Next i End Sub

Pozwólcie, że wyjaśnię, jak działa ten kod VBA.

Najpierw użyłem zmiennej RCount aby uzyskać całkowitą liczbę wierszy w zaznaczeniu.

Następnie użyłem pętli For Next, aby uruchomić to tyle razy, ile jest tam wierszy. Na przykład, jeśli jest 12 wierszy, ta pętla będzie działać od 12 do 1 (tj. 12 razy). Ważne jest, aby uruchomić to od ostatniego wiersza w zaznaczeniu do pierwszego, ponieważ nie chcemy, aby numery wierszy zmieniały się po usunięciu wiersza.

Używany jest również krok -2, ponieważ musimy usunąć co drugi wiersz (od dołu do góry). Jeśli chcesz usunąć co trzeci wiersz, możesz użyć -3.

W pętli VBA użyłem metody Selection.Rows(i).EntireRow.Delete, aby usunąć każdy alternatywny wiersz.

Usuń puste wiersze za pomocą VBA

Możesz również użyć metody EntireRow.Delete, aby usunąć wszystkie puste wiersze.

Poniżej znajduje się kod VBA, który wybierze puste komórki w wybranym zestawie danych i usunie cały wiersz.

Sub DeleteBlankRows() Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Delete End Sub

Powyższy kod używa właściwości SpecialCells do zaznaczania i usuwania wszystkich komórek, które są puste. Jest to ta sama metoda, która pozwala nam również użyć okna dialogowego „Przejdź do specjalnego”, aby wybrać wszystkie puste komórki.

Gdy te puste komórki zostaną zidentyfikowane za pomocą SpecialCell, są one następnie usuwane przy użyciu metody EntireRow.Delete.

Uwagi: Ta metoda wybiera komórki, które są puste i nie sprawdzają, czy cały wiersz jest pusty, czy nie. Więc jeśli jakakolwiek komórka jest pusta w wierszu, to i tak usunie cały wiersz.

Usuń wiersze z określonym słowem/wartością

Możesz także 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ść.

Załóżmy na przykład, że masz zestaw danych i chcę usunąć wszystkie komórki zawierające 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 -1 If Cells(i, 2).Value = "Printer" Then Cells(i, 2).EntireRow.Delete End If Next i End Sub

Powyższy kod najpierw zlicza całkowitą liczbę wierszy w zaznaczeniu. Dzięki temu pętla zostanie uruchomiona tylko tyle razy. Następnie używa pętli „For Next”, aby przejść przez wszystkie komórki w kolumnie 2.

Instrukcja IF THEN ELSE jest następnie używana do sprawdzania wartości w każdej komórce w kolumnie 2. W przypadku, gdy wartość/tekst pasuje do określonego tekstu (którym w tym przykładzie jest „Drukarka”).

W tym przykładzie sprawdziłem, czy tekst pasuje do określonego ciągu, czy nie. Możesz to również zrobić 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ą, na którą należy zwrócić uwagę, jest to, że pętla biegnie od Wybór.Rzędy.Liczba do 1 aby upewnić się, że usunięcie wiersza nie ma wpływu na wiersze nad nim.

Jak korzystać z tego kodu VBA

Teraz pokażę, jak użyć wszystkich kodów wymienionych w tym samouczku, aby usunąć cały wiersz.

Musisz skopiować i wkleić te kody w module 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:

  1. Przytrzymaj klawisz ALT i naciśnij klawisz F11 (lub funkcja + opcja + F11 na komputerze Mac). Otworzy się edytor VB
  2. W edytorze VB będziesz miał eksplorator projektu po lewej stronie. Jeśli go nie widzisz, przejdź do opcji Widok, a następnie kliknij Eksplorator projektów.
  3. Kliknij prawym przyciskiem myszy dowolny obiekt w Eksploratorze projektów (w skoroszycie, w którym chcesz uruchomić kod).
  4. Przejdź do Wstaw, a następnie kliknij Moduł. Spowoduje to wstawienie nowego modułu do skoroszytu
  5. Skopiuj i wklej powyższe kody do modułu.

Aby uruchomić te kody, możesz umieścić kursor w dowolnym miejscu w kodzie (który chcesz uruchomić) i nacisnąć klawisz F5 (lub kliknąć zielony trójkąt na pasku narzędzi VBA).

Napisałem również szczegółowy samouczek na temat różnych sposobów uruchamiania kodów makr VBA w programie Excel.

W przypadku konieczności częstego używania któregokolwiek z tych kodów, można również rozważyć dodanie ich do skoroszytu makr osobistych, a następnie do QAT. W ten sposób kod będzie dostępny w dowolnym ze skoroszytów za pomocą jednego kliknięcia.

Oto kilka kodów VBA, których można użyć do usunięcia całych wierszy w programie Excel (w różnych scenariuszach). Tę samą logikę można również zastosować w przypadku, gdy chcesz usunąć kolumny zamiast wierszy (z odpowiednią korektą w przykładach kodu).

Mam nadzieję, że ten samouczek okazał się przydatny!

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave