Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[EXCEL] eliminare con una macro righe

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] eliminare con una macro righe

Postdi accio1965 » 07/09/08 21:31

buonasera
vorrei creare una macro che in automatico mi elimina tutte le righe di un foglio che alla colonna E contengono il valore numerico zero

vi chiedo anche come inserire il codice di questo macro all'interno di una macro gia esistente,

grazie dell'aiuto
accio
accio1965
Utente Junior
 
Post: 52
Iscritto il: 21/08/07 08:39

Sponsor
 

Re: [EXCEL] eliminare con una macro righe

Postdi Tribuno » 07/09/08 22:42

Codice: Seleziona tutto
Sub Elimina_Righe_Zero()
    Application.ScreenUpdating = False
    Righe = Sheets(1).Range("A65356").End(xlUp).Row
    i = 1
    While Cells(i, 5) <> ""
        If Cells(i, 5) = 0 Then
            Rows(i).Select
            Selection.Delete Shift:=xlUp
            i = i - 1
        End If
        i = i + 1
    Wend
End Sub

Il codice presuppone il fatto che in colonna E i dati siano tutti consecutivi senza celle vuote (non ci deve essere nemmeno lo spazio), altrimenti bisogna effettuare delle modifiche.

Per dire come inserire il codice all'interno di una macro esistente bisogna capire in quale punto tu voglia inserirlo, comunque se nel modulo copi il codice, nella macro esistente puoi inserire
Codice: Seleziona tutto
Elimina_Righe_Zero

nel punto dove vuoi effettuare l'eliminazione delle righe.

Ciao
Avatar utente
Tribuno
Utente Senior
 
Post: 181
Iscritto il: 22/08/08 19:24

Re: [EXCEL] eliminare con una macro righe

Postdi Tribuno » 07/09/08 22:50

...ops, mi sono dimenticato un'istruzione, ecco il codice completo
Codice: Seleziona tutto
Sub Elimina_Righe_Zero()
    Application.ScreenUpdating = False
    Righe = Sheets(1).Range("A65356").End(xlUp).Row
    i = 1
    While Cells(i, 5) <> ""
        If Cells(i, 5) = 0 Then
            Rows(i).Select
            Selection.Delete Shift:=xlUp
            i = i - 1
        End If
        i = i + 1
    Wend
    Application.ScreenUpdating = True
End Sub
Avatar utente
Tribuno
Utente Senior
 
Post: 181
Iscritto il: 22/08/08 19:24

Re: [EXCEL] eliminare con una macro righe

Postdi accio1965 » 07/09/08 22:52

direi che funziona, domani provo nel file originale e provo ad inserire al punto giusto
grazie gia da adesso
accio
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] eliminare con una macro righe

Postdi accio1965 » 08/09/08 22:05

c'è un problema
se utilizzo la macro che mi ha postato sopra Tribuno tutto Ok nel foglio su cui deve essere effettuata l'eliminazione ma stranamente mi vengono anche modificate delle formule presenti su un altro folgio e precisamente dentro delle formule con cerca verticale che fanno riferimento come matrice dati proprio all'altro foglio dove vengono eliminate le righe, praticamente viene ridotto di iniziativa da excel il range di ricerca del cerca vert.
accio1965
Utente Junior
 
Post: 52
Iscritto il: 21/08/07 08:39

Re: [EXCEL] eliminare con una macro righe

Postdi Tribuno » 08/09/08 23:08

Eliminando le righe (o anche le celle), pur utilizzando riferimenti assoluti ($A$1 al posto di A1) o nomi in una formula cui fa riferimento il range/matrice dove vengono eliminate le righe/celle, il range di riferimento cambia in automatico.

Per non andare a modificare le formule che hai già utilizzato, ho modificato il codice, non fa nient'altro che cancellare i dati e traslarli verso l'alto, senza eliminare le righe, in questo modo le tue formule non cambiano il range che hai impostato.

Codice: Seleziona tutto
Sub Elimina_Righe_Zero()
    Application.ScreenUpdating = False
    righe = Sheets(1).Range("A65356").End(xlUp).Row
    cont = 0
    i = 1
    While Cells(i, 5) <> ""
        If Cells(i, 5) = 0 Then
            For y = 1 To righe - cont
                For k = 1 To 5
                    Cells(i, k) = Cells(i + 1, k)
                Next k
            Next y
            For k = 1 To 5
                Cells(righe - cont, k) = ""
            Next k
            cont = cont + 1
            i = i - 1
        End If
        i = i + 1
    Wend
    Application.ScreenUpdating = True
End Sub
Avatar utente
Tribuno
Utente Senior
 
Post: 181
Iscritto il: 22/08/08 19:24

Re: [EXCEL] eliminare con una macro righe

Postdi accio1965 » 09/09/08 09:06

questo nuovo codice per la macro non mi funziona, mi solo limitato ad incollarlo sul editor di visual basic ed associare la macro ad un pulsante
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] eliminare con una macro righe

Postdi Tribuno » 09/09/08 09:18

Cosa non ti funziona? Che tipo di errore riscontri?

Prova a cambiare
righe = Sheets(1).Range("A65356").End(xlUp).Row
con
righe = Sheets(1).Range("E65356").End(xlUp).Row
Avatar utente
Tribuno
Utente Senior
 
Post: 181
Iscritto il: 22/08/08 19:24

Re: [EXCEL] eliminare con una macro righe

Postdi Tribuno » 09/09/08 10:28

Un'altra domanda: all'inizio avevi detto che era necessario eliminare la riga se in col. E il valore è uguale a 0, nell'ultimo codice io ho "eliminato" i valori delle colonne A,B,C,D,E se in E=0. Ci sono per caso altri dati in altre colonne da eliminare? Attenzione, io faccio riferimento al primo foglio che visualizzi in excel (prima linguetta a sinistra).
Avatar utente
Tribuno
Utente Senior
 
Post: 181
Iscritto il: 22/08/08 19:24

Re: [EXCEL] eliminare con una macro righe

Postdi accio1965 » 09/09/08 12:18

allora io inserisco la macro su di un foglio che non e il primo della cartella di lavoro anzi in questo momento è il 16
ho provato ad utilizzare la macro su un singolo foglio però da un errore lo stesso perché mi elimina tutti le righe dalla 362 compresa in poi
io pero dovrei utilizzare la macro su di un foglio non al primo posto
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] eliminare con una macro righe

Postdi accio1965 » 09/09/08 13:09

ecco l'esempio con l'errore
Allegati

[L’estensione zip è stata disattivata e non puó essere visualizzata.]

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] eliminare con una macro righe

Postdi Anthony47 » 09/09/08 14:38

Viste le difficolta' io propongo questa macro:
Codice: Seleziona tutto
Sub ACCIO()
Righe = Sheets(1).Range("E65536").End(xlUp).Row
For I = 1 To Righe
 If Cells(I, 5).Value = 0 Then
 Range(Cells(I + 1, 1), Cells(Righe, 5)).Copy Destination:=Cells(I, 1)
 Cont = Cont + 1
End If
Next I
Range(Cells(I - Cont, 1), Cells(I, 5)).ClearContents
End Sub

Non sono certo di aver seguito bene la discussione e quindi aver afferrato il bisogno, quindi mi raccomando per le classiche due copie di backup prima di lanciare la macro...

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: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] eliminare con una macro righe

Postdi Tribuno » 09/09/08 21:47

Seguendo il consiglio di Anthony ho modificato il codice, l'ho provato sul file di esempio e funziona.
La macro devi farla partire dal foglio dove hai i dati da eliminare, va bene associato ad un pulsante come nell'esempio. Adesso non viene modificato il range che avevi impostato nella formula in un altro foglio. Prova e fa sapere.

Ciao

Codice: Seleziona tutto
Sub Elimina_Righe_Zero()
    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
End Sub


P.S. lascia pure Range "E65536" come nel codice, se lo modifichi rischi che la macro non sia più valida se superi le 800 righe di dati.
Avatar utente
Tribuno
Utente Senior
 
Post: 181
Iscritto il: 22/08/08 19:24

Re: [EXCEL] eliminare con una macro righe

Postdi accio1965 » 09/09/08 22:47

mi pare che adesso ci siamo
domani faccio sapere con maggiore precisione
grazie a tutti
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


Torna a Applicazioni Office Windows


Topic correlati a "[EXCEL] eliminare con una macro righe":


Chi c’è in linea

Visitano il forum: Nessuno e 18 ospiti