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