Condividi:        

[excel] macro elimina righe in base al valore cella

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

[excel] macro elimina righe in base al valore cella

Postdi accio1965 » 21/08/09 10:59

ciao
volevo realizzare una macro che eliminasse tutte le righe che contengono nella prima colonna un valore maggiore di 200
avevo questa macro che eliminava tutte le righe che alla colonna 5 avevano il valore zero
Sub elim()

Sheets("ele").Select
Range("A4:E700").Select
Selection.Copy
Sheets("giocatori").Select
Range("A21").Select
ActiveSheet.Paste

Application.ScreenUpdating = False
With ActiveSheet
righe = Range("E65536").End(xlUp).Row
End With
cont = 0
i = 1
While Cells(i, 5) <> ""
If Cells(i, 5) = 0 Then
Range(Cells(i + 1, 1), Cells(righe - cont, 5)).Copy Destination:=Cells(i, 1)
cont = cont + 1
i = i - 1
End If
i = i + 1
Wend
Range(Cells(i - cont, 1), Cells(i, 5)).ClearContents
Application.ScreenUpdating = True
Sheets("SVINCOLATI").Select
End Sub

ho effettuato queste modifiche ma non funziona
Sub eli()


Application.ScreenUpdating = False
With ActiveSheet
righe = Range("A65536").End(xlUp).Row
End With
cont = 0
i = 1
While Cells(i, 1) <> ""
If Cells(i, 1) > 200 Then
Range(Cells(i + 1, 1), Cells(righe - cont, 1)).Copy Destination:=Cells(i, 1)
cont = cont + 1
i = i - 1
End If
i = i + 1
Wend
Range(Cells(i - cont, 1), Cells(i, 1)).ClearContents
Application.ScreenUpdating = True
Sheets("ele").Select
End Sub

accio1965
Utente Junior
 
Post: 52
Iscritto il: 21/08/07 08:39

Sponsor
 

Re: [excel] macro elimina righe in base al valore cella

Postdi Anthony47 » 21/08/09 13:51

Prova con questa macro:
Codice: Seleziona tutto
Sub del200()
righe = Cells(Rows.Count, 1).End(xlUp).Row
For I = righe To 1 Step -1
Cells(I, 1).Select
If Selection.Value > 200 Then Selection.Entirerow.Delete
Next I
End Sub

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

Re: [excel] macro elimina righe in base al valore cella

Postdi accio1965 » 21/08/09 14:47

perfetta
grazie mille
AMD Athlon 64x2 dual core P 4600+ 2,40 GHz
windows vista hd sp2
office 2007
accio1965
Utente Junior
 
Post: 52
Iscritto il: 21/08/07 08:39

Re: [excel] macro elimina righe in base al valore cella

Postdi accio1965 » 24/08/09 14:15

la macro che mi ha postato Antony47 è perfetta
vorrei apportare una modifica al metodo di selezione ossia:
adesso tutte le righe da eliminare sono quelle che nella cella della colonna A hanno un valore diverso da un numero oppure sono vuote
grazie come al solito!
AMD Athlon 64x2 dual core P 4600+ 2,40 GHz
windows vista hd sp2
office 2007
accio1965
Utente Junior
 
Post: 52
Iscritto il: 21/08/07 08:39

Re: [excel] macro elimina righe in base al valore cella

Postdi Anthony47 » 24/08/09 15:21

Devi "lavorare" sull' istruzione If; purtroppo non ho capito se devi eliminare tutte le righe che in col A non hanno un numero o solo quelle che hanno un contenuto diverso da un numero specifico.
Nel primo caso userai qualcosa come
If Not isNumeric(Selection.Value) Then Selection.Entirerow.Delete
nel secondo
If Selection.Value <> XYZ Then Selection.Entirerow.Delete dove XYZ e' il numero da confrontare o una variabile che contiene il numero.

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

Re: [excel] macro elimina righe in base al valore cella

Postdi accio1965 » 24/08/09 18:54

allora la macro cosi modificata è perfetta
Sub del200()
righe = Cells(Rows.Count, 1).End(xlUp).Row
For I = righe To 1 Step -1
Cells(I, 1).Select
If Not isNumeric(Selection.Value) Then Selection.Entirerow.Delete
Next I
End Sub

pero non cancella le righe dove il valore di col A è vuoto quindi oltre al parametro If Not isNumeric dovrei dirgli di cancellare anche se la cella è vuota
AMD Athlon 64x2 dual core P 4600+ 2,40 GHz
windows vista hd sp2
office 2007
accio1965
Utente Junior
 
Post: 52
Iscritto il: 21/08/07 08:39

Re: [excel] macro elimina righe in base al valore cella

Postdi Anthony47 » 24/08/09 21:22

Gia'... IsNumeric risponde True su una cella vuota, mentre mi aspettavo che avrebbe dato False. Inserirai quindi un OR nell' istruzione If:
Codice: Seleziona tutto
If Selection.value = "" OR Not isNumeric(Selection.Value) Then Selection.Entirerow.Delete

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

Re: [excel] macro elimina righe in base al valore cella

Postdi accio1965 » 25/08/09 11:56

Codice: Seleziona tutto
righe = Cells(Rows.Count, 1).End(xlUp).Row
For I = righe To 1 Step -1
Cells(I, 1).Select
If Selection.Value = "" Or Not IsNumeric(Selection.Value) Then Selection.EntireRow.Delete
Next I

ho fatto la modifica che mi ha suggerito ma le righe con la cella vuota in colonna A continuano a non essere eliminate
AMD Athlon 64x2 dual core P 4600+ 2,40 GHz
windows vista hd sp2
office 2007
accio1965
Utente Junior
 
Post: 52
Iscritto il: 21/08/07 08:39

Re: [excel] macro elimina righe in base al valore cella

Postdi Anthony47 » 25/08/09 21:56

Hummm... allora credo che le celle non siano "vuote"; sono per caso pagine prelevate da un sito web? Puoi ispezionarle con attenzione, in particolare alla ricerca di caratteri "spazio"?

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

Re: [excel] macro elimina righe in base al valore cella

Postdi Flash30005 » 26/08/09 01:45

Ho provato la macro di Anthony e funziona anche con gli spazi, è un bel rebus :roll:

Potresti provare una macro che prende solo i numeri e scarta tutto il resto tipo questa
Codice: Seleziona tutto
Sub DelNonNum()
righe = Cells(Rows.Count, 1).End(xlUp).Row
For I = righe To 1 Step -1
Cells(I, 1).Select
Valn = Mid(Cells(I, 1), 1, 1)
If Asc(Valn) < 48 Or Asc(Valn) > 57 Then Selection.EntireRow.Delete
Next I
End Sub


ma ho dei dubbi...

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: [excel] macro elimina righe in base al valore cella

Postdi accio1965 » 28/08/09 08:01

i dati vengono prelevati da un altro foglio excel e non dal web
ho provato anche la macro di di Flash ma non funziona
per sincerarmi se le celle erano effettivamente vuote ho fatto un copi incolla speciale valori del contenuto e sembrano effettivamente vuote
cosa altro devo controllare?
posso anche lavorare nella colonna B in quanto i valori di questa sono uguali per le celle da eliminare????
AMD Athlon 64x2 dual core P 4600+ 2,40 GHz
windows vista hd sp2
office 2007
accio1965
Utente Junior
 
Post: 52
Iscritto il: 21/08/07 08:39

Re: [excel] macro elimina righe in base al valore cella

Postdi Anthony47 » 28/08/09 13:31

Ma le celle "vuote" in col A sono le ultime dell' elenco?

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

Re: [excel] macro elimina righe in base al valore cella

Postdi accio1965 » 14/09/09 09:14

Anthony47 ha scritto:Ma le celle "vuote" in col A sono le ultime dell' elenco?

Ciao

scusa se rispondo in ritardo:
SI confermo le celle "vuote" in col A sono le ultime dell' elenco
grazie!
AMD Athlon 64x2 dual core P 4600+ 2,40 GHz
windows vista hd sp2
office 2007
accio1965
Utente Junior
 
Post: 52
Iscritto il: 21/08/07 08:39

Re: [excel] macro elimina righe in base al valore cella

Postdi Flash30005 » 14/09/09 13:49

accio1965 ha scritto:...
SI confermo le celle "vuote" in col A sono le ultime dell' elenco

Bisognerebbe avere il foglio davanti ma credo che Anthony abbia centrato l'obiettivo
tu hai delle celle vuote alla fine della colonna A mentre in B e C o D ci sono celle con dei valori

Quindi è chiaro che non vengono cancellate perché il codice
Codice: Seleziona tutto
righe = Cells(Rows.Count, 1).End(xlUp).Row

conta le righe piene in A e trovandole vuote non processa quelle righe facendole rimanere nel foglio, quindi,
dovresti puntare su sulla colonna che ha sicuramente più righe delle altre, se ciò non è possibile perché c'è variabilità e se le colonne dei dati sono adiacenti alla colonna A, prova questo codice sostituendolo alla macro precedente:

Codice: Seleziona tutto
righe = Range("A2").CurrentRegion.Rows.Count


Fai sapere
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: [excel] macro elimina righe in base al valore cella

Postdi accio1965 » 15/09/09 15:33

Codice: Seleziona tutto
righe = Range("A2").CurrentRegion.Rows.Count
For I = righe To 1 Step -1
Cells(I, 1).Select
If Not IsNumeric(Selection.Value) Then Selection.EntireRow.Delete
Next I

ho fatto questa modifica con il tuo suggerimento ma la macro continua a non eliminare le celle in cui il valore di colonna A è vuoto
boh?
AMD Athlon 64x2 dual core P 4600+ 2,40 GHz
windows vista hd sp2
office 2007
accio1965
Utente Junior
 
Post: 52
Iscritto il: 21/08/07 08:39

Re: [excel] macro elimina righe in base al valore cella

Postdi Flash30005 » 15/09/09 18:04

Ehmm..
Si può avere questo file?
Nella colonna B ci sono dei dati e anche nella colonna C etc?
Qual'è la colonna che ha più righe? E' sempre la stessa?

Altrimenti fai una prova avviando la macro dal visual basic con il tasto F8 (dopo che il cursore del mouse è all'interno della macro) e ti fermi alla 2ª riga
righe = Range("A2").CurrentRegion.Rows.Count
For I = righe To 1 Step -1 <<<<<< qui (evidenziata in giallo)
poi punti il mouse sulla variabile
righe = e annoti il valore che ti fornisce il debug (es 158)
vai sul foglio e controlli se effettivamente il massimo di righe occupate nel foglio è 158 o un numero maggiore
Un'ultima cosa: quando avvi la macro che elimina le righe, hai attivo il foglio con le righe da cancellare oppure ti trovi su un altro foglio?

Fai sapere
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: [excel] macro elimina righe in base al valore cella

Postdi Anthony47 » 16/09/09 01:18

Dovrebbe essere sufficiente usare
Codice: Seleziona tutto
righe = ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Range("A1").Row

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

Re: [excel] macro elimina righe in base al valore cella

Postdi accio1965 » 16/09/09 09:39

allora con questo
Codice: Seleziona tutto
righe = ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Range("A1").Row
For I = righe To 1 Step -1
Cells(I, 1).Select
If Not IsNumeric(Selection.Value) Then Selection.EntireRow.Delete
Next I

le righe con la cella vuota di colonna A non vengono ancora eliminate (: (:

rispondo anche a flash
[quote[Altrimenti fai una prova avviando la macro dal visual basic con il tasto F8 (dopo che il cursore del mouse è all'interno della macro) e ti fermi alla 2ª riga
righe = Range("A2").CurrentRegion.Rows.Count
For I = righe To 1 Step -1 <<<<<< qui (evidenziata in giallo)
poi punti il mouse sulla variabile
righe = e annoti il valore che ti fornisce il debug (es 158)
vai sul foglio e controlli se effettivamente il massimo di righe occupate nel foglio è 158 o un numero maggiore
il numero effettivo delle righe occupate è 343 il debug fornisce per la variabile righe 344

Un'ultima cosa: quando avvi la macro che elimina le righe, hai attivo il foglio con le righe da cancellare oppure ti trovi su un altro foglio?

mi trovo su di un altro foglio
AMD Athlon 64x2 dual core P 4600+ 2,40 GHz
windows vista hd sp2
office 2007
accio1965
Utente Junior
 
Post: 52
Iscritto il: 21/08/07 08:39

Re: [excel] macro elimina righe in base al valore cella

Postdi Anthony47 » 16/09/09 13:01

La nostra macro conteneva questa:
Codice: Seleziona tutto
If Selection.Value = "" Or Not IsNumeric(Selection.Value) Then Selection.EntireRow.Delete
Ripristinala

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

Re: [excel] macro elimina righe in base al valore cella

Postdi accio1965 » 17/09/09 08:19

perfetto e grazie come al solito
riporto l'intero codice della macro per chi ne avrà bisogno in futuro:

la macro cancella tutte le righe dove le celle di colonna A NON è presente un numero oppure sono vuote
Codice: Seleziona tutto
righe = ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Range("A1").Row
For I = righe To 1 Step -1
Cells(I, 1).Select
If Selection.Value = "" Or Not IsNumeric(Selection.Value) Then Selection.EntireRow.Delete
Next I

grazie di nuovo
AMD Athlon 64x2 dual core P 4600+ 2,40 GHz
windows vista hd sp2
office 2007
accio1965
Utente Junior
 
Post: 52
Iscritto il: 21/08/07 08:39

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "[excel] macro elimina righe in base al valore cella":


Chi c’è in linea

Visitano il forum: Nessuno e 54 ospiti