Usuwanie wiersza za pomocą VBA

w programie Excel możesz usunąć wiersz, klikając prawym przyciskiem myszy numer wiersza, a następnie wybierając Usuń. Ale jeśli chcesz usunąć wiersze przy użyciu bardziej wyrafinowanych metod, musisz użyć VBA. Pozwoli to na usuwanie wierszy na wiele różnych sposobów.

Usuń określony wiersz

najbardziej podstawowym sposobem usuwania wiersza w VBA jest użycie numeru wiersza.

Sub deleteSpecificRow()Rows(4).DeleteEnd Sub

spowoduje to usunięcie czwartego wiersza za każdym razem, gdy wykonasz makro.

Usuń wiele wierszy

Możesz również usunąć kilka wierszy jednocześnie. Zamiast wybierać numer wiersza, wybierz zakres wierszy.

Sub deleteMultipleRows()Rows("2:4").DeleteEnd Sub

usunie wiersze 2, 3 i 4.

Usuń wybrane wiersze

do tej pory stworzyliśmy makra, które usuwały wiersze ze stałymi numerami wewnątrz kodu. Tym razem usuńmy wiersze z zaznaczenia. Użyjmy następującego kodu.

Sub deleteSelectedRows()Selection.EntireRow.DeleteEnd Sub

Usuń puste wiersze

w tym przykładzie program Excel identyfikuje, które komórki są puste, wybiera je i usuwa wiersze, w których są obecne.

Sub deleteBlankRows()Selection.SpecialCells(xlCellTypeBlanks).SelectSelection.EntireRow.DeleteEnd Sub

to makro usuwa wiersze z zaznaczenia tylko wtedy, gdy Zawiera wyrażenie „zły wiersz”.

Uwaga

pamiętaj, że w tekście rozróżniana jest wielkość liter.

Sub deleteRowswithSelectedText()For Each Cell In Selection If Cell.Value = "Bad Row" Then Rows(Cell.Row).ClearContents End IfNextSelection.SpecialCells(xlCellTypeBlanks).SelectSelection.EntireRow.DeleteEnd Sub

analiza kodu

2. Pętla przechodzi przez każdy element zaznaczenia.

3. Excel sprawdza rzeczywistą wartość komórki i czy wartość jest dokładnie „Bad Row”.

4. Jeśli warunek jest spełniony, program Excel czyści zawartość komórki. Nie możemy usunąć komórki, ponieważ pozycja komórki się zmieni, a niektóre „złe wiersze” mogą pozostać.

7. Gdy wszystkie” złe wiersze ” są usuwane, Excel wybiera te komórki.

8. Następnie usuwa rzędy tych komórek.

Jeśli chcesz również usunąć te wiersze, które składają się z tej frazy, a nie tylko dokładne dopasowanie, Użyj funkcji InStr. Funkcja ta zwraca pozycję pierwszego wystąpienia wyrażenia.

Zmień

Cell.Value = "Bad Row"

na

InStr(Cell, "Bad Row") > 0

mamy cztery różne przykłady w naszym arkuszu. Każdy z nich zwraca pozycję.

  • „Bad Row” zwraca 1
  • „Good Row” zwraca 0
  • „1 Bad Row” zwraca 3
  • „Bad Row !”zwraca 1

, co oznacza, że wszystkie wiersze oprócz „dobrego wiersza” zostaną usunięte.

Usuń wiersz, w którym typem komórki jest łańcuch

w tym przykładzie usuniemy wiersz, jeśli typ komórki jest łańcuchem.

na pierwszy rzut oka komórki A3, A4 i A5 wydają się być tego samego typu. Ale kiedy spojrzysz na to, co dzieje się za kulisami (Ctrl+`), zobaczysz, że każdy z nich jest inny.

Sub deleteifString()Selection.SpecialCells(xlCellTypeConstants, 2).SelectSelection.EntireRow.DeleteEnd Sub

w drugiej linii masz następujący kod: xlCellTypeConstants. Oznacza to, że szukamy stałych. Liczba 2 oznacza drugi typ, czyli tekst.

Excel wybierze tylko wartości typu tekst.

wynik.

Usuń wiersze parzyste/nieparzyste

teraz usuńmy tylko te wiersze, które są parzyste.

Sub deleteEven()For Each Cell In Selection If Cell.Row Mod 2 = 0 Then Rows(Cell.Row).ClearContents End IfNextSelection.SpecialCells(xlCellTypeBlanks).SelectSelection.EntireRow.DeleteEnd Sub

kod jest bardzo podobny do tego z poprzedniego przykładu. Jest tylko jedna różnica.

Cell.Wiersz Mod 2 = 0

oznacza to, że jeżeli reszta po podziale wynosi 0 (dla liczb: 2, 4, 6, 8, …) wtedy liczba jest parzysta, jeśli jest to 1 to jest to liczba nieparzysta (1, 3, 5, 6, …).

entuzjasta arkuszy kalkulacyjnych i Pythona.

odsłon wpisu: 72 354

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.