Potrebbero esserci momenti in cui dobbiamo eliminare righe o colonne vuote da un file in Excel per loop scriveremo macro / codice vba. Il codice che dobbiamo utilizzare varia da situazione a situazione. A volte potremmo dover eliminare una riga o una colonna mentre a volte dobbiamo eliminare un intero intervallo di righe o colonne o talvolta righe / colonne in base a una o più condizioni.

Se devi eliminare solo una o più righe o colonne specifiche, usiamo VBA excel for loop e puoi semplicemente usare il seguente codice – _Option Explicit Sub macro1 ()

Application.DisplayAlerts = False With Worksheets (“Sheet1”)

Rows (“5: 6”). Delete .Columns (“A: D”). Delete End With Application.DisplayAlerts = True End Sub_ Puoi vedere il codice che è stato copiato nella finestra del codice Module1. Per copiare il codice, premi Alt + F11 sul tuo file. Sul lato sinistro vedrai gli oggetti di Microsoft Excel. Fare clic con il tasto destro e selezionare Inserisci, quindi fare clic su Modulo. La finestra del codice apparirà a destra. Copia il codice. Guarda l’immagine sotto –

img1

Application.DisplayAlerts = False

Impostiamo gli avvisi di visualizzazione su false e salviamo il file con il nome file richiesto. Quindi imposta gli avvisi sul display su true appena prima di End Sub.

With Worksheets (“Sheet1”) è un ciclo With che termina con End With.

Se si utilizza questo per il ciclo VBA Excel, tutte le istruzioni all’interno di questo ciclo, che utilizzano questo oggetto, non devono iniziare con “Fogli di lavoro (” Foglio1 “)”. Invece, possono iniziare direttamente con un punto (.).

.Rows (“5: 6”). Delete eliminerà solo le righe 5 e 6.

Columns (“A: D”). Delete cancellerà le colonne da A a D.

In questo caso verranno eliminate solo le righe / colonne specificate.

Tuttavia, a volte potrebbe essere necessario eliminare righe / colonne in base a determinate condizioni. Ad esempio supponiamo di voler eliminare tutte le colonne nel file che contengono “Test” come intestazione. In questo caso, abbiamo bisogno di un ciclo che controllerà da una colonna all’altra e quando i criteri saranno soddisfatti, eliminerà la colonna.

Possiamo usare un codice come questo. Nota che ogni persona preparerà il codice nel modo in cui è a suo agio. Questo è solo uno dei modi in cui può essere codificato e non è l’unico metodo.

_Opzione Explicit Sub macro2 ()

Dim i As Long, lcol As Long Application.DisplayAlerts = False With Worksheets (“Sheet1”)

lcol = .Range (“A1”). End (xlToRight) .Column For i = lcol to 1 Step -1 If .Cells (1, i) .Value = “” Then Exit For If .Cells (1, i). value = “Test” Quindi .Columns (i) .Delete Next i End With Application.DisplayAlerts = True End Sub_ Vedi il codice che è stato salvato nel Modulo 1 come da immagine sotto

img2

Qui lcol è l’ultima colonna del foglio che contiene dati. Nel caso in cui ti capiti di testare questo codice su un file vuoto, lcol avrà il valore di 16384 o il numero di colonna dell’ultima colonna secondo la tua versione di Excel. Quindi eseguiamo un ciclo dall’ultima colonna alla prima colonna, spostandoci ogni volta indietro di un passo. Ci stiamo spostando all’indietro perché il codice di eliminazione funziona correttamente solo quando inizi a eliminare dall’ultima riga o dall’ultima colonna. Se parti dalla 1 ^ a ^ riga / colonna il codice tende a dare errori.

La 1 ^ st ^ se la condizione è inserita lì nel caso in cui esegui la macro su un file vuoto. In Excel la macro eseguirà un ciclo dall’ultima colonna che è 16384 in questo caso fino alla colonna 1 e questo potrebbe richiedere molto tempo. Quindi, nel caso in cui il codice trovi una colonna vuota, terminerà il ciclo immediatamente attraverso l’istruzione exit For. La condizione 2 ^ nd ^ if controlla se il valore è “Test” e cancella la colonna se viene trovato “Test”.

Nel caso in cui desideri eliminare le righe invece delle colonne, il codice cambierà in – _Option Explicit Sub macro3 ()

Dim i As Long, lrow As Long Application.DisplayAlerts = False With Worksheets (“Sheet1”)

lrow = .range (“A” & .Rows.Count) .End (xlUp) .Row For i = lrow to 2 Step -1 If .Cells (i, 1) .Value = “” Then Exit For If .Cells ( i, 1) .Value = “Test” Quindi .Rows (i) .Delete Next i End With Application.DisplayAlerts = True End Sub_ Vedi il codice sotto –

img3

Avresti osservato che .Cells (1, i) .value cambia in .Cells (i, 1) .value nel codice sopra. Questo accade perché nel primo codice stavamo eliminando le colonne, quindi la variabile “i” doveva scorrere le colonne, mentre nel 2 ^ nd ^ codice deve scorrere le righe. Qui eseguiremo un ciclo dall’ultima riga alla 2 ^ a ^ riga, poiché la 1 ^ a ^ riga contiene intestazioni che devono essere mantenute.

Secondo il requisito del codice, puoi persino unire entrambe le righe di eliminazione ed eliminare il codice delle colonne in 1 codice. Puoi anche inserire più condizioni in base alle quali la riga / colonna deve essere eliminata. Considera, vogliamo eliminare tutte le righe in cui la 1 ^ st ^ colonna contiene testo come Test o Dummy, quindi il codice sarà così – _Option Explicit Sub macro4 ()

Dim i As Long, lrow As Long Application.DisplayAlerts = False With Worksheets (“Sheet1”)

lrow = .range (“A” & .Rows.Count) .End (xlUp) .Row For i = lrow to 2 Step -1 If .Cells (i, 1) .Value = “” Then Exit For If .Cells ( i, 1) .Value = “Test” Or .Cells (i, 1) .Value = “Dummy” Quindi .Rows (i) .Elimina Next i End With Application.DisplayAlerts = True End Sub_

img4

Allo stesso modo, puoi aggiungere a questo codice o al codice che hai in base al requisito. Puoi aggiungere più condizioni per le righe e anche per le colonne.

image 48