RIMUOVE RIGHE CONFRONTANDO VALORE 0
Hai un problema con Excel? 
RIMUOVE RIGHE CONFRONTANDO VALORE 0
di vatuss (utente non iscritto) data: 15/07/2017 09:00:21
Buon giorno forum. Allo scopo di rendere più efficiente il mio lavoro vorrei sapere se è possibile costruire una macro che controlli la colonna Q del foglio e se trova un valore uguale a 0 o negativo (per es. : -55) lo confronta con la colonna N e se uguale a 0 o negativo e rimuovere la riga.
Con il codice che segue (non è farina del mio sacco) ottengo la stessa operazione sulla colonna M senza alcun controllo
Sub EliminaZeri()
Columns("M:M").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="0"
Rows("2:65000").Select
Selection.Delete Shift:=xlUp
Selection.AutoFilter
Range("M2").Select
End Sub
Spero ci sia una soluzione, grazie.
di patel data: 15/07/2017 10:50:46
prova questa
Sub a()
LR = Cells(Rows.Count, "Q").End(xlUp).Row
For r = LR To 1 Step -1
If Cells(r, "Q") <= 0 And Cells(r, "N") <= 0 Then Rows(r).Delete
Next
End Sub |
di vatuss (utente non iscritto) data: 15/07/2017 18:54:57
grazie per la risposta Patel, la macro inizia a eseguire ma lo ripete sempre senza rimuovere le righe e senza mai fermarsi.
di vatuss (utente non iscritto) data: 15/07/2017 20:14:28
Ciao patel chiedo venia ma mi sono sbagliato,
la macro è perfetta anche se ha impiegato circa 15 minuti a cercare nelle 3000 righe che presto diventeranno almeno il doppio.
E' forse possibile velocizzarla?
Buona serata e grazie mille
di Vecchio Frac data: 15/07/2017 22:03:36
Quindici minuti, mi sembra un'esagerazione.
Disabilita il calcolo automatico e il refresh dello schermo.
di Vecchio Frac data: 15/07/2017 22:30:39
Potresti costruire due righe di VBA che impostino un AdvancedFilter basato su due celle contigue di criteri e poi selezionare d'un botto le sole celle visibili per eliminare l'intera riga. Velocissimo.
Nell'esempio che segue:
A1 intestazione primo campo da controllare (etichetta colonna Q)
B1 intestazione secondo campo da controllare (etichetta colonna N)
A2 scrivi "< 0" (senza spazi e virgolette)
B2 scrivi "< 0" (senza spazi e virgolette)
Ora seleziona A1:B2 e definisci il nome "criteri". I dati iniziano dopo una riga vuota e cioè da A4; in riga 4 ci sono quindi le intestazioni delle colonne e da riga 5 i dati veri e propri. Avvia la macro (i dati vengono eliminati quindi lavora su una copia! :) )
Option Explicit
Sub find_delete()
Range("A4:Q200000").AdvancedFilter xlFilterInPlace, criteriarange:=Range("criteri")
Range("A5:Q200000").SpecialCells(xlCellTypeVisible).EntireRow.Delete
ActiveSheet.ShowAllData
End Sub
|
di vatuss (utente non iscritto) data: 16/07/2017 22:04:37
Grazie Patel e Vecchio Frac siete stati molto cortesi a darmi una mano.
Vuoi Approfondire?