Vba: jak usuwać wiersze na podstawie wartości komórki
Możesz użyć następującej składni w VBA, aby usunąć wiersze na podstawie wartości komórki:
Sub DeleteRowsByValue()
Dim ws As Worksheet
Set ws = ActiveSheet
'clear existing filters
On Error Resume Next
ws.ShowAllData
On Error GoTo 0
'filter range where column 2 in range is equal to "East"
ws.Range(" A1:C10 ").AutoFilter Field:=2, Criteria1:=" East "
'delete rows that are visible
Application.DisplayAlerts = False
ws.Range(" A2:C10 ").SpecialCells(xlCellTypeVisible).Delete
Application.DisplayAlerts = True
'remove filter
On Error Resume Next
ws.ShowAllData
On Error GoTo 0
End Sub
To konkretne makro usuwa wszystkie wiersze z zakresu A1:C10 , gdzie wartość kolumny B jest równa „Is”.
To makro składa się z następujących kroków:
- Zastosuj filtr do A1:C10, aby wyświetlić tylko wiersze, których wartość w kolumnie B wynosi „Is”.
- Następnie usuń wszystkie widoczne komórki.
- Następnie wyjmij filtr.
Powoduje to usunięcie wszystkich wierszy w zakresie A1:C10 , gdzie wartość w kolumnie B jest równa „Is”.
Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.
Przykład: użyj VBA, aby usunąć wiersze na podstawie wartości komórki
Załóżmy, że mamy następujący zbiór danych zawierający informacje o różnych koszykarzach:
Załóżmy, że chcemy usunąć każdy wiersz ze zbioru danych, w którym kolumna Konferencja ma wartość „Wschód”.
W tym celu możemy utworzyć następujące makro:
Sub DeleteRowsByValue()
Dim ws As Worksheet
Set ws = ActiveSheet
'clear existing filters
On Error Resume Next
ws.ShowAllData
On Error GoTo 0
'filter range where column 2 in range is equal to "East"
ws.Range(" A1:C10 ").AutoFilter Field:=2, Criteria1:=" East "
'delete rows that are visible
Application.DisplayAlerts = False
ws.Range(" A2:C10 ").SpecialCells(xlCellTypeVisible).Delete
Application.DisplayAlerts = True
'remove filter
On Error Resume Next
ws.ShowAllData
On Error GoTo 0
End Sub
Kiedy uruchomimy to makro, otrzymamy następujące dane wyjściowe:
Należy pamiętać, że wszystkie wiersze, w których wartość w kolumnie Konferencja brzmiała „Wschód”, zostały usunięte.
Uwaga : Linia Application.DisplayAlerts=False informuje VBA, aby nie wyświetlał procesu usuwania widocznych linii, co przyspiesza ten proces.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w VBA:
VBA: Jak zastosować formatowanie warunkowe do komórek
VBA: Jak policzyć liczbę wierszy w zakresie
VBA: Jak liczyć komórki zawierające określony tekst