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.