Categorie
Automazione Excel

Cancellare un set di dati da Excel con una macro

In questo articolo vediamo come eliminare con una macro un set di dati da un foglio Excel. Questa funzione è utile quando si ha la necessità di ripulire ciclicamente dei dati senza cancellare le formule e la programmazione dell’ intero foglio.

Il set di dati da cancellare può essere:

  • molto esteso (migliaia di righe)
  • non contiguo all’interno del foglio
  • distribuito su più fogli

L’operazione manuale di cancellazione manuale richiede per ogni porzione di dati contigui da cancellare la loro selezione e cancellazione , bisogna quindi selezionare più zone all’interno del singolo foglio con il tasto Ctrl e ripetere questa operazione su più fogli. L’ operazione può diventare onerosa per migliaia di righe.

Soprattutto se deve essere ripetuta ciclicamente potrebbe essere utile risparmiare tempo lasciando fare il lavoro ad una macro.

Vedremo il codice che seleziona una zona ben precisa eliminando poi tutti i dati partendo da una determinata linea.

Utilizzeremo le funzioni per trovare l’ultima riga e l’ultima colonna del set di dati che ci interessa eliminare. Queste funzioni sono state descritte in un precedente articolo: Problema della individuazione automatica dell’ ultima riga e dell’ ultima colonna con dati in un file Excel

Al solito dal file Excel che ci interessa apriamo l’ editor VBA e creiamo la macro ‘ZapData’ scrivendo il codice che segue

Aprire Microsoft Visual Basic da Excel
Dal menu Excel:

  • cliccare sulla voce Sviluppo (e non trovate la voce Sviluppo nel menu è necessario spuntare la voce ‘Sviluppo’ dalle ‘Opzioni di Excel’ alla voce ‘Personalizza barra multifunzione’).
  • cliccando sulla voce Sviluppo appare nella barra l’icona Macro : cliccando su di essa si apre la finestra di dialogo Macro
  • digitare il nome senza spazi alla macro che si sta andando a creare e cliccando sul pulsante ‘Crea’ si aprirà il modulo VBA.
Sub ZapData()
Dim LastRow, StartZapRow As Integer
Dim DataSheet As Worksheet
Dim LastCol As Long
Set DataSheet = Worksheets(“Zap”)
LastRow = DataSheet.UsedRange.Rows.Count
LastCol = DataSheet.UsedRange.Columns.Count

StartZapRow = 12
If LastRow > StartZapRow Then
If MsgBox(“Verrano eliminate ” & LastRow – StartZapRow & ” righe” & vbCrLf & “Confermi ?”, vbYesNo Or vbQuestion, MacroTitle) = vbYes Then

DataSheet.Range(“A” & StartZapRow & “:” & NumCol2Letter(LastCol) & LastRow).Delete
Else

MsgBox “Operazione annullata”, vbInformation, “ZapDataImport”
End If
End If
End Sub

Questo codice seleziona il foglio del file Excel, nel nostro esempio foglio si chiama ‘Zap’, calcola l’ultima riga e l’ ultima colonna del foglio, imposta la riga 12 come partenza dei dati da cancellare, chiede conferma dell’ operazione ed infine cancella i dati dalla riga 12 fino alla fine dei dati contenuti nel foglio.

E’ facile ripetere il codice indicando altri set di dati nello stesso foglio e/o in altri fogli.