Eliminazione di una riga con VBA

In Excel, è possibile eliminare una riga facendo clic destro sul numero della riga e quindi selezionando Elimina. Ma quando vuoi eliminare le righe usando metodi più sofisticati devi usare VBA. Ti permetterà di eliminare le righe in molti modi diversi.

Elimina una riga specifica

Il modo più semplice per eliminare una riga in VBA è utilizzando il numero di riga.

Sub deleteSpecificRow()Rows(4).DeleteEnd Sub

Questo cancellerà la quarta riga ogni volta che si esegue la macro.

Elimina più righe

Puoi anche eliminare alcune righe contemporaneamente. Invece di selezionare il numero di riga, selezionare un intervallo di righe.

Sub deleteMultipleRows()Rows("2:4").DeleteEnd Sub

Eliminerà le righe 2, 3 e 4.

Elimina le righe selezionate

Finora abbiamo creato macro che cancellavano righe con numeri fissi all’interno del codice. Questa volta, eliminiamo le righe da una selezione. Usiamo il seguente codice.

Sub deleteSelectedRows()Selection.EntireRow.DeleteEnd Sub

Elimina righe vuote

In questo esempio, Excel identifica le celle vuote, le seleziona e rimuove le righe in cui sono presenti.

Sub deleteBlankRows()Selection.SpecialCells(xlCellTypeBlanks).SelectSelection.EntireRow.DeleteEnd Sub

Questa macro elimina le righe dalla selezione solo se contiene la frase “Bad Row”.

ATTENZIONE

Ricordate che il testo è case sensitive.

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

Analisi del codice

2. Il ciclo passa attraverso ogni elemento nella selezione.

3. Excel controlla il valore effettivo della cella e se il valore è esattamente “Bad Row”.

4. Se la condizione è soddisfatta, Excel cancella il contenuto della cella. Non possiamo eliminare la cella perché la posizione della cella cambierà e alcune delle” Righe errate ” potrebbero rimanere.

7. Quando tutte le” Righe errate ” vengono cancellate, Excel seleziona queste celle.

8. Quindi elimina le righe di queste celle.

Se vuoi anche eliminare quelle righe che consistono in questa frase, e non solo la corrispondenza esatta, usa la funzione InStr. Questa funzione restituisce la posizione della prima occorrenza della frase.

Cambia

Cell.Value = "Bad Row"

a

InStr(Cell, "Bad Row") > 0

Abbiamo quattro diversi esempi all’interno del nostro foglio di lavoro. Ognuno di loro restituisce una posizione.

  • “Bad Row” restituisce 1
  • “Good Row” restituisce 0
  • “1 Bad Row” restituisce 3
  • “Bad Row !”restituisce 1

Ciò significa che tutte le righe tranne “Buona riga” verranno rimosse.

Elimina riga dove il tipo di cella è una stringa

In questo esempio, elimineremo una riga se il tipo di cella è una stringa.

A prima vista, le celle A3, A4 e A5 sembrano essere dello stesso tipo. Ma quando guardi cosa sta succedendo dietro le quinte (Ctrl`’) vedrai che ognuno di loro è diverso.

Sub deleteifString()Selection.SpecialCells(xlCellTypeConstants, 2).SelectSelection.EntireRow.DeleteEnd Sub

Nella seconda riga, hai il seguente codice: xlCellTypeConstants. Significa che stiamo cercando costanti. Numero 2 indica il secondo tipo, che è testo.

Excel sceglierà solo i valori di tipo text.

Il risultato.

Elimina righe pari/dispari

Ora cancelliamo solo quelle righe pari.

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

Il codice è molto simile a quello dell’esempio precedente. C’è solo una differenza.

Cella.Riga Mod 2 = 0

Questo significa, se il resto dopo la divisione è 0 (per i numeri: 2, 4, 6, 8, …) quindi il numero è pari, se è 1 allora è un numero dispari (1, 3, 5, 6, …).

Foglio di calcolo e Python appassionato.

Visualizzazioni post: 72,354

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.