Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Macro per cancellare con condizione

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

Macro per cancellare con condizione

Postdi yaryz » 07/09/10 14:18

Ciao a tutti vorrei chiedere un aiutino...
ho una macro dove cerco dei valori nelle celle e li cancello

è possibile fare un eccezione di un valore e quindi non cancellarlo??

faccio un esempio

If Cells(i, 1).Value = "PICCOLI ELETTRODOMESTICI" And Cells(i, 2).Value = <> "" Then
Rows(i & ":" & i).Delete
GoTo salta
End If


in cella 2 ci stanno diversi valori, tra cui macchina del caffè , forno , crepes ecc..
come posso dire di cancellare tutti i valori in cella 2 e lasciare solo quello con il valore Forno ??

grazie
yaryz
Utente Junior
 
Post: 14
Iscritto il: 07/12/09 15:40

Sponsor
 

Re: Macro per cancellare con condizione

Postdi yaryz » 07/09/10 14:19

yaryz ha scritto:Ciao a tutti vorrei chiedere un aiutino...
ho una macro dove cerco dei valori nelle celle e li cancello

è possibile fare un eccezione di un valore e quindi non cancellarlo??

faccio un esempio

If Cells(i, 1).Value = "PICCOLI ELETTRODOMESTICI" And Cells(i, 2).Value = <> "" Then
Rows(i & ":" & i).Delete
GoTo salta
End If


in cella 2 ci stanno diversi valori, tra cui macchina del caffè , forno , crepes ecc..
come posso dire di cancellare tutti i valori in cella 2 e lasciare solo quello con il valore Forno ??

grazie



ovviamente cancellare la riga intera!
yaryz
Utente Junior
 
Post: 14
Iscritto il: 07/12/09 15:40

Re: Macro per cancellare con condizione

Postdi Flash30005 » 07/09/10 15:56

Non hai alternativa se non quella di inserire delle condizioni, come quella da te utilizzata per "Piccoli Elettrodomestici", per ogni stringa che devi trovare e della quale devi cancellare la riga (puoi usare la condizione OR).
A meno che in un'altra colonna non c'è un codice univoco per i "piccoli elettrodomestici"
In questo caso controlli la colonna con il codice dei piccoli elettrodomestici es P.E. e metterai solo la condizione che se il codice P.E. corrisponde allora cancelli tutte le righe diverse (<>) da "Forno" .

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Macro per cancellare con condizione

Postdi yaryz » 07/09/10 16:33

grazie per la dritta ma non ho altri codici di riferimento per poter fare quello che consigli tu...

quindi non è possibile fare un controllo ad esempio
se PICOLLI ELETTRODOMENTICI CORRISPONDE A forno lascia altrimenti cancella intera riga...
non è fattibile??
yaryz
Utente Junior
 
Post: 14
Iscritto il: 07/12/09 15:40

Re: Macro per cancellare con condizione

Postdi Flash30005 » 07/09/10 22:38

yaryz ha scritto:quindi non è possibile fare un controllo ad esempio
se PICOLLI ELETTRODOMENTICI CORRISPONDE A forno lascia altrimenti cancella intera riga...
non è fattibile??


Certo che è fattibile! Se "Piccoli Elettrodomestici" ce l'hai scritto in una cella nella stessa riga di Forno
come dall'esempio che mi hai appena mostrato.
Se invece "Piccoli elettrodomestici" ce l'hai in testata non dico che non sia fattibile ma bisogna vedere come sono disposti i dati perché si trova sempre una soluzione "Ad Hoc" valida per te ma non per un altro utente che ha una disposizione diversa dei dati.
Ti faccio un esempio:
hai un elenco di dati con delle testate che separano le tipologie dei prodotti
se dopo la testata "Piccoli elettrodomestici" (e il suo elenco)
c'è sempre la testata "Grandi Elettrodomestici" o una riga vuota o altro ancora si fa una macro che quando trova "Piccoli elettrodomestici" attiva la cancellazione delle righe che non contengono "Forno" ma al momento che viene trovata la testata successiva "Grandi Elettrodomestici" o una riga vuota la cancellazione non avviene più (esce da quella routine).
Come ti dicevo devi analizzare il tuo elenco e trovare l'escamodage per risolvere il tuo quesito perché le soluzioni ci sono sempre (o quasi).
Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Macro per cancellare con condizione

Postdi Anthony47 » 08/09/10 01:45

Se ho capito bene in col A hai la categoria, es PICCOLI ELETTRODOMESTICI, e in col B hai una descrizione piu' precisa, es FORNO.
Allora dovrebbe bastare
Codice: Seleziona tutto
If Cells(i, 1).Value = "PICCOLI ELETTRODOMESTICI" And Cells(i, 2).Value = <> "FORNO" Then

Se pero' hai tante categorie e tanti modelli da prendere in considerazione, potrebbe essere utile crearti un elenco con Categoria & modelli di salvare; poi in una colonna di appoggio del tuo elenco controlli, riga per riga, se quella Categoria & Modello esiste nell' elenco, se SI non cancelli.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro per cancellare con condizione

Postdi yaryz » 08/09/10 11:30

Flash30005 ha scritto:
yaryz ha scritto:quindi non è possibile fare un controllo ad esempio
se PICOLLI ELETTRODOMENTICI CORRISPONDE A forno lascia altrimenti cancella intera riga...
non è fattibile??


Certo che è fattibile! Se "Piccoli Elettrodomestici" ce l'hai scritto in una cella nella stessa riga di Forno
come dall'esempio che mi hai appena mostrato.
Se invece "Piccoli elettrodomestici" ce l'hai in testata non dico che non sia fattibile ma bisogna vedere come sono disposti i dati perché si trova sempre una soluzione "Ad Hoc" valida per te ma non per un altro utente che ha una disposizione diversa dei dati.
Ti faccio un esempio:
hai un elenco di dati con delle testate che separano le tipologie dei prodotti
se dopo la testata "Piccoli elettrodomestici" (e il suo elenco)
c'è sempre la testata "Grandi Elettrodomestici" o una riga vuota o altro ancora si fa una macro che quando trova "Piccoli elettrodomestici" attiva la cancellazione delle righe che non contengono "Forno" ma al momento che viene trovata la testata successiva "Grandi Elettrodomestici" o una riga vuota la cancellazione non avviene più (esce da quella routine).
Come ti dicevo devi analizzare il tuo elenco e trovare l'escamodage per risolvere il tuo quesito perché le soluzioni ci sono sempre (o quasi).
Ciao


Si effettivamente Piccoli elettrodomestici è in una cella nella stessa riga.

l'esempio è
Piccoli elettrodomestici | Forno |
Piccoli elettrodomestici | Crepes |
ecc.

quindi la mia domanda è
se PICOLLI ELETTRODOMENTICI CORRISPONDE A forno lascia altrimenti cancella intera riga...
quindi dovrebbe cancellare Piccoli elettrodomestici | Crepes |

ma nono so come devo fare con il codice
grazie a tutti
se
yaryz
Utente Junior
 
Post: 14
Iscritto il: 07/12/09 15:40

Re: Macro per cancellare con condizione

Postdi Flash30005 » 08/09/10 11:59

yaryz ha scritto:Si effettivamente Piccoli elettrodomestici è in una cella nella stessa riga.


Quindi puoi usarlo come codice di confronto (o codice univoco).

Puoi usare una macro di questo tipo
Codice: Seleziona tutto
Sub CancRighe()
For I = 20 To 2 Step -1
If UCase(Cells(I, 1).Value) = "PICCOLI ELETTRODOMESTICI" And UCase(Cells(I, 2).Value) <> "FORNO" Then
Rows(I & ":" & I).Delete
End If
Next I
End Sub


Il ciclo For...next deve essere a ritroso (partire dall'ultima riga) altrimenti con la cancellazione delle righe ne salteresti sicuramente qualcuna.
Inoltre usa Ucase (come nella macro) e inserisci i nomi in maiuscolo in maniera tale che qualsiasi carattere ci sia nell'elenco (maiuscolo o minuscolo) viene riconosciuto sempre come maiuscolo.
Non so come sono i dati e se sono "puliti" da eventuali spazi a inizio e/o fine stringa,
nel caso non lo fossero potresti usare la funzione Trim(Cells(I, 2).Value) combinata con UCase
UCase(Trim(Cells(I, 2).Value)).

Fai sapere
ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-


Torna a Applicazioni Office Windows


Topic correlati a "Macro per cancellare con condizione":


Chi c’è in linea

Visitano il forum: Nessuno e 14 ospiti