Vba: come eliminare le righe in base al valore della cella


È possibile utilizzare la seguente sintassi in VBA per eliminare righe in base al valore di una cella:

 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

Questa particolare macro elimina tutte le righe nell’intervallo A1:C10 in cui il valore della colonna B è uguale a “Is”.

Questa macro utilizza i seguenti passaggi:

  • Applica un filtro a A1:C10 per visualizzare solo le righe il cui valore nella colonna B è “Is”.
  • Quindi elimina tutte le celle visibili.
  • Quindi rimuovere il filtro.

Ciò ha l’effetto di eliminare tutte le righe nell’intervallo A1:C10 in cui il valore nella colonna B è uguale a “Is”.

L’esempio seguente mostra come utilizzare questa sintassi nella pratica.

Esempio: utilizzare VBA per eliminare le righe in base al valore della cella

Supponiamo di avere il seguente set di dati contenente informazioni su vari giocatori di basket:

Supponiamo di voler rimuovere ogni riga dal set di dati in cui la colonna Conferenza è uguale a “Est”.

Per fare ciò possiamo creare la seguente macro:

 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

Quando eseguiamo questa macro, riceviamo il seguente output:

Tieni presente che tutte le righe in cui il valore nella colonna Conferenza era “Est” sono state eliminate.

Nota : la riga Application.DisplayAlerts=False indica a VBA di non visualizzare il processo di rimozione delle righe visibili, accelerando il processo.

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre attività comuni in VBA:

VBA: come applicare la formattazione condizionale alle celle
VBA: come contare il numero di righe nell’intervallo
VBA: come contare le celle con testo specifico

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *