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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *