Condividi:        

come eseguire una macro per eliminare le righe con valore 0

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

come eseguire una macro per eliminare le righe con valore 0

Postdi donciak » 09/08/14 19:16

Buonasera,
sono nuovo del forum, mi chiamo Renzo e mi scuso della mia ignoranza in materia specifica.
Però ho urgente bisogno di una macro che mi possa eliminare le righe che hanno come valore 0 nella colonna N e poi fatto questo mi deve eliminare tutte le righe che hanno come testo SOFTWARE nella colonna AK

In pratica ho un foglio che si chiama Dispo, è un file che ogni giorno viene aggiornato per cui le righe possono cambiare, invece le colonne no, e vanno dalla colonna A fino alla colonna AK. Oggi in questo file Dispo ci sono 82174 righe. A me interessa la colonna N (
disponibilità prodotti) dove bisogna cancellare tutte le righe che nella colonna N ha come valore 0 (prodotto non disponibile).
Poi quando avrò tutte le righe con prodotti disponibili, devo cancellare nella colonna AK le righe che riportano la parola SOFTWARE (è una categoria dove non mi servono i relativi prodotti disponibili).

Spero di essere stato chiaro e vi ringrazio tantissimo se mi potete aiutare.
Cordiali saluti a tutti.
donciak
Newbie
 
Post: 7
Iscritto il: 09/08/14 18:51

Sponsor
 

Re: come eseguire una macro per eliminare le righe con valor

Postdi Anthony47 » 12/08/14 01:20

Ciao donciak, benvenuto nel forum.
Credo che una macro come questa, che usa il filtro automatico, dovrebbe fare quello che chiedi:
Codice: Seleziona tutto
Sub donc()
'
    ActiveSheet.Copy Before:=Sheets(ActiveSheet.Index + 1)     '<<<* Vedi Testo
    ActiveSheet.Range("$A$1:$AK$100000").AutoFilter Field:=14, Criteria1:="=0", _
        Operator:=xlAnd
    Rows("2:100000").Select
    Selection.Delete Shift:=xlUp
    ActiveSheet.ShowAllData
    ActiveSheet.Range("$A$1:$AK$100000").AutoFilter Field:=37, Criteria1:="*SOFTWARE*", _
        Operator:=xlAnd
    Rows("2:100000").Select
    Selection.Delete Shift:=xlUp
    ActiveSheet.ShowAllData
    Range("A1").Select
End Sub

Da excel, Alt-F11 e ti si apre l' editor delle macro
-Menu /Inserisci /Modulo
-Copi il codice e lo incolli nel frame di dx

Poi torni sul foglio dei tuoi dati ed esegui la macro:
-Alt-F8, scegli "donc" dall' elenco che ti propone, premi Esegui

Dato l' effetto potenzialmente distruttivo sui tuoi dati, la macro prima crea una copia del tuo foglio di lavoro e poi, su questo nuovo foglio, applica i filtri rimuovendo i dati. Questo e' fatto tramite la riga marcata "<<<": se questa precauzione e' superflua puoi cancellarla.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: come eseguire una macro per eliminare le righe con valor

Postdi donciak » 13/08/14 11:00

Grazie tante Anthony.
Però mi dà questo errore:
Errore di run-time 1004
Errore nel metodo ShowAllData per la classe worksheet

Fine Debug

Potresti aiutarmi?
donciak
Newbie
 
Post: 7
Iscritto il: 09/08/14 18:51

Re: come eseguire una macro per eliminare le righe con valor

Postdi donciak » 13/08/14 13:25

Per favore qualcuno può darmi una risposta.
Grazie tante.
donciak
Newbie
 
Post: 7
Iscritto il: 09/08/14 18:51

Re: come eseguire una macro per eliminare le righe con valor

Postdi peppo55 » 13/08/14 15:25

Ciao donciak,

prova ad inserire nel codice

Codice: Seleziona tutto
On Error Resume Next
ActiveSheet.ShowAllData
On Error GoTo 0
peppo

Excel 2010
peppo55
Utente Senior
 
Post: 167
Iscritto il: 30/09/12 13:51

Re: come eseguire una macro per eliminare le righe con valor

Postdi Anthony47 » 13/08/14 18:34

Grazie peppo per il tuo intervento.
Per donciack: le tre righe di peppo vanno a sostituire la riga "ActiveSheet.ShowAllData", presente in due punti della macro originale.

Ciao a tutti.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: come eseguire una macro per eliminare le righe con valor

Postdi donciak » 13/08/14 18:39

Non funziona, mi dà sempre lo stesso errore.
donciak
Newbie
 
Post: 7
Iscritto il: 09/08/14 18:51

Re: come eseguire una macro per eliminare le righe con valor

Postdi Anthony47 » 13/08/14 18:56

La riga "On Error Resume Next" dice: da adesso in poi ignora gli errori e continua come se niente fosse (il rilevamento degli errori verra' ripristinato dalla riga "On Error GoTo 0").
Se tu invece continui ad avere errore sulla riga che viene subito dopo "On Error Resume Next" allora devo immaginare che il tuo vba sia corrotto e dovresti reinstallare Office...
Poiche' la cosa e' poco probabile ti chiedo di pubblicare uno screenshot fatto al momento dell' errore in cui si legga
-il messaggio di errore
-l' istruzione in errore
-il codice dell' intera macro
Per come produrre e pubblicare uno screenshot guarda qui: viewtopic.php?f=26&t=80395#p466013

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: come eseguire una macro per eliminare le righe con valor

Postdi donciak » 13/08/14 18:59

Ho provato ma mi cancella tutto e rimango i filtri aperti.
donciak
Newbie
 
Post: 7
Iscritto il: 09/08/14 18:51

Re: come eseguire una macro per eliminare le righe con valor

Postdi Anthony47 » 13/08/14 19:12

Non ho capito se il tuo foglio ora e' tutto vuoto o se i filtri nascondono le informazioni.
Puoi anche pubblicare il testo della macro che usi?

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: come eseguire una macro per eliminare le righe con valor

Postdi donciak » 13/08/14 22:07

La macro che uso la inserisco sotto. Vorrei precisare che nel file ho 3 fogli di lavoro e sono così chiamati:
1 Archivio Esprinet
2 Dispo
3 RicTipo

Con la macro noi dobbiamo lavorare nel foglio Dispo e nelle colonne N (da cancellare le righe che hanno come valore 0) e la colonna AK (da cancellare successivamente le righe che hanno come testo "SOFTWARE").
Forse l'errore viene dato dalla colonna AK dove il testo, nelle singole righe, viene inserito attraverso questa formula: =CERCA.VERT(H2;RicTipo!B:F;5;0). In pratica lo va a ricercare nel foglio RicTipo.

Sotto inserisco il testo della macro attuale:

Sub donc()
'
ActiveSheet.Copy Before:=Sheets(ActiveSheet.Index + 1) '<<<* Vedi Testo
ActiveSheet.Range("$A$1:$AK$100000").AutoFilter Field:=14, Criteria1:="=0", _
Operator:=xlAnd
Rows("2:100000").Select
Selection.Delete Shift:=xlUp
On Error Resume Next
ActiveSheet.ShowAllData
On Error GoTo 0
ActiveSheet.Range("$A$1:$AK$100000").AutoFilter Field:=37, Criteria1:="*SOFTWARE*", _
Operator:=xlAnd
Rows("2:100000").Select
Selection.Delete Shift:=xlUp
On Error Resume Next
ActiveSheet.ShowAllData
On Error GoTo 0
Range("A1").Select
End Sub
donciak
Newbie
 
Post: 7
Iscritto il: 09/08/14 18:51

Re: come eseguire una macro per eliminare le righe con valor

Postdi Anthony47 » 14/08/14 14:38

Non hai pero' sciolto il mio primo dubbio...

Facciamo cosi':
-dopo ognuno dei due " Rows("2:100000").Select" aggiungi una riga con l' istruzione "Stop" (senza le virgolette).
-manda in esecuzione la macro, che si fermera' sul primo Stop; premi F5 e andra' sul secondo Stop; premi F5 e si completa.
In questo modo allo Stop potrai visualizzare il foglio Excel e vedere che cosa il filtro automatico ha selezionato e verificare se sono solo le righe che in colonna N hanno "0" e poi (secondo Stop) in colonna AK hanno la parola Software (il tasto F5 va pigiato dopo aver resa attiva la finestra "Microsoft Visual Basic, ...").

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: come eseguire una macro per eliminare le righe con valor

Postdi donciak » 14/08/14 17:14

L'ho fatto. Al primo stop vedo che sono attivi tutti i filtri delle colonne e sono selezionate tutte le righe con valore nella colonna N.
Al secondo stop vedo che sono ancora selezionati tutti i filtri delle colonne e non c'è più nemmeno una riga. Faccio di nuovo stop e non accade niente, rimangono attivi tutti i filtri delle colonne. A questo punto deseleziono i filtri per vedere se ci sono delle righe ma non c'è più niente, ha cancellato tutto.
Non so più che fare, proprio non si riesce ad aggiustare questa macro, è proprio difficile.
donciak
Newbie
 
Post: 7
Iscritto il: 09/08/14 18:51

Re: come eseguire una macro per eliminare le righe con valor

Postdi Flash30005 » 15/08/14 09:33

Ciao Donciak e benvenuto anche da parte mia

Prova questa macro (spartana ma credo funzionale)
Codice: Seleziona tutto
Sub EliminaRighe()
Worksheets("Dispo").Select
Application.ScreenUpdating = False
Application.Calculation = xlManual
UR = Range("A" & Rows.Count).End(xlUp).Row
For RR = UR To 2 Step -1
If Range("N" & RR).Value = 0 Or UCase(Range("AK" & RR).Value) = "SOFTWARE" Then Rows(RR).Delete
Next RR
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub


ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: come eseguire una macro per eliminare le righe con valor

Postdi peppo55 » 17/08/14 09:15

Ciao donciak ,

"è un file che ogni giorno viene aggiornato per cui le righe possono cambiare"

Intendi dire che i dati sono collegati ad una origine esterna di dati?
Oppure i dati vengono aggiunti manualmente ogni giorno?
Dovresti indicare anche che versione di Excel usi.
peppo

Excel 2010
peppo55
Utente Senior
 
Post: 167
Iscritto il: 30/09/12 13:51

Re: come eseguire una macro per eliminare le righe con valor

Postdi Anthony47 » 17/08/14 15:22

Nell' ipotesi che non risolva tramite la macro di Flash:
-Seleziona le colonne A:AK sul tuo foglio e imposta su di esse il Filtro automatico.
Quindi:
-avvia la registrazione di una nuova macro (la procedura dipende dalla versione di Excel in uso)
-filtri la colonna N sul valore pari a "zero"
-controlli che risultino selezionate solo le righe con valore "zero"
-interrompi la registrazione della macro
-pubblichi nel prossimo messaggio il codice della macro prodotta dal registratore

Rispondi anche alle domande di peppo55, e, aggiungo, indica se hai colonne unite e in quali posizioni.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "come eseguire una macro per eliminare le righe con valore 0":

BTp Valore
Autore: MarioLombardi
Forum: Forum off-topic
Risposte: 2

Chi c’è in linea

Visitano il forum: Nessuno e 93 ospiti