Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

cancellare tutte le righe 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

cancellare tutte le righe con condizione

Postdi luca62 » 30/12/15 10:34

Carissimi,
ad una macro creata da Anthony tempo fa necessito dialcune moidifiche ,che non riesco a fare
In pratica vorrei cancellare tutte le righe (dalla 2^ in poi) che contengono questi criteri:
1) cancellare la riga Jesima dove alla colonna k (quindi kj ) sia = MAG
2)cancellare la riga Jesima dove alla colonna Lj SIA = 0 E CONTEMPORANEAMENTE Ej diverso da zero.
Una volta cancellate le varie righe, le righe vanno comunque addensate , in modo cioè che
non rimanga una riga vuota tra (quella eliminata) tra righe piene
ALlego il testo della macro


Sub compilaordini2()
'
' compilaordini2 Macro
' Macro registrata il 12/01/2015 da LUCA
'

Dim LastR As Long
'
Sheets("ORDINI").Range("c2").Resize(10000, 11).ClearContents '****
Sheets("INCOLONNA").Select
LastR = Evaluate("=MAX((A1:H10000<>"""")*(ROW(A1:A10000)))")
Range("A2:E2").Resize(LastR, 5).Copy Destination:=Sheets("ORDINI").Range("c2")
Range("F2:H2").Resize(LastR, 3).Copy Destination:=Sheets("ORDINI").Range("j2")
Range("I2").Resize(LastR, 1).Copy Destination:=Sheets("ORDINI").Range("h2")
Range("J2").Resize(LastR, 1).Copy Destination:=Sheets("ORDINI").Range("M2")
Sheets("ORDINI").Range("I2").Resize(LastR - 1, 1).Formula = "=$H2*$G2"
Sheets("ORDINI").Range("b2").Resize(LastR - 2, 1).Formula = "=$b$1"
Sheets("ORDINI").Range("A3").Resize(LastR - 2, 1).Formula = "=$A2+1"

Range("A2").Resize(LastR, 1).Copy
Sheets("ORDINI").Range("G2").Resize(LastR, 1).PasteSpecial _
Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("A2").Resize(LastR, 1).Copy
Sheets("ORDINI").Range("A2").Resize(LastR, 1).PasteSpecial _
Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("A2").Resize(LastR, 1).Copy
Sheets("ORDINI").Range("B2").Resize(LastR, 1).PasteSpecial _
Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("A2").Resize(LastR, 1).Copy
Sheets("ORDINI").Range("I2").Resize(LastR, 1).PasteSpecial _
Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False


'
End Sub
luca62 office2007 window7
luca62
Utente Senior
 
Post: 158
Iscritto il: 23/12/12 14:54

Sponsor
 

Re: cancellare tutte le righe con condizione

Postdi ricky53 » 30/12/15 15:01

Ciao,
se vuoi che noi si continui utilizzando quanto già prodotto da Anthony devi allegare un file, di esempio (senza dati riservati), sul quale lavorare.

Ci devi anche dire cosa fa attualmente la macro di Anthony ... NON farcelo dedurre leggendo/eseguendo il codice su una struttura dati che NON abbiamo.

Volendo si può scrivere del nuovo codice che applichi le condizioni che hai scritto senza far riferimento a macro già esistenti ... questo lo devi valutare tu in base al risultati che vuoi ottenere ed a ciò che stai elaborando.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: cancellare tutte le righe con condizione

Postdi ricky53 » 30/12/15 15:23

Ciao,
in attesa ho scritto del codice, provalo e ... fatti sentire.
Il codice lavora sull'intervallo dati dalla colonna "A" alla colonna "Z", cambia la colonna "Z" in base ai tuoi dati

Codice: Seleziona tutto
Option Explicit

Sub Cancella_Righe()
    Dim UR As Long
   
    UR = Range("K" & Rows.Count).End(xlUp).Row
    Range("A1:Z1" & UR).AutoFilter ' <<====== scelte le colonne da  'A'  a  'Z'  cambia in base ai tuoi dati
    Range("A1:Z1" & UR).AutoFilter Field:=1, Criteria1:="<>" ' <<====== scelte le colonne da  'A'  a  'Z'  cambia in base ai tuoi dati
    ActiveSheet.ShowAllData
    Selection.AutoFilter Field:=11, Criteria1:="MAG"
    Selection.AutoFilter Field:=12, Criteria1:="0"
    Selection.AutoFilter Field:=5, Criteria1:="<>0"
    UR = Range("K" & Rows.Count).End(xlUp).Row
    If UR = 1 Then
        MsgBox "NON esistono dati per le condizioni scelte", vbExclamation
    Else
        Rows("2:" & UR).Select
        Selection.Delete Shift:=xlUp
        MsgBox "Cancellazione Effettuata", vbInformation
    End If
    ActiveSheet.ShowAllData
    Range("K1").Select
End Sub
Ultima modifica di ricky53 su 30/12/15 15:26, modificato 1 volte in totale.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: cancellare tutte le righe con condizione

Postdi luca62 » 30/12/15 15:26

Hai ragione! , ritengo che andrebbe benissimo anche una macro separata che poi io vado a collegare con un Call a fine macro.
in sostanza ,necessiterei di una nuova macro nella quale poter andare a cancellare nel foglio "Ordini"
tutte le righe (dalla 2^ in poi) che contengono questi criteri:
1) cancellare la riga Jesima dove alla colonna k (quindi kj ) sia = MAG
2)cancellare la riga Jesima dove alla colonna Lj SIA = 0 E CONTEMPORANEAMENTE Ej diverso da zero.
Una volta cancellate le varie righe, le righe vanno comunque addensate , in modo cioè che
non rimanga una riga vuota tra (quella eliminata) tra righe piene.
luca62 office2007 window7
luca62
Utente Senior
 
Post: 158
Iscritto il: 23/12/12 14:54

Re: cancellare tutte le righe con condizione

Postdi ricky53 » 30/12/15 15:35

Ciao,
non hai letto il mio ulteriore intervento che è subito prima del tuo intervento.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: cancellare tutte le righe con condizione

Postdi luca62 » 30/12/15 16:02

non funziona...
non capisco perchè...
come fa a capire che voglio applicare la macro al foglio "Ordini" ?
Mi dice che non esistono dati per le soluzioni scelte
luca62 office2007 window7
luca62
Utente Senior
 
Post: 158
Iscritto il: 23/12/12 14:54

Re: cancellare tutte le righe con condizione

Postdi ricky53 » 30/12/15 16:08

Ciao,
se la esegui in coda all'altra macro e la tua macro lavora sul foglio "ORDINI" non ci sono problemi altrimenti va adattata, comunque, per capire cosa avviene serve un file di esempio.
Per il momento seleziona il foglio "ORDINI" e provala di nuovo ... eseguendola con il tasto "F8"
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: cancellare tutte le righe con condizione

Postdi luca62 » 30/12/15 16:37

selezionato il foglio ordini, fatta partire la macro ma
mi dice Mi dice che non esistono dati per le soluzioni scelte
eppure sulla colonna K è pieno di MAG,e dalla tua macro (sicuramente per mia ignoranza)
non capisco dove vengono date le condizioni per le quali cancellare tutte le righe in cui k
(da k2 a k10000) è = alla parola MAG e quelle in cui si verifica invece la doppia condizione
ossia L=0 e contemporanemante E diverso da zero (anche qui a partire dalla seconda riga)
luca62 office2007 window7
luca62
Utente Senior
 
Post: 158
Iscritto il: 23/12/12 14:54

Re: cancellare tutte le righe con condizione

Postdi ricky53 » 31/12/15 01:21

Ciao,
invia un file di esempio e ... NE USCIREMO !!!
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: cancellare tutte le righe con condizione

Postdi luca62 » 31/12/15 09:38

la macro ora funziona, mi ero probabilmebte espresso male,
con la tua macro si cancellano tutte le righe che rispondono contemporaneamnete a 3 condizioni,
mentre io volevo cancellare tutte le righe con kj= Mag e (altro criterio) tutte le righe
per le quali si verifichi che lj=0 e contemporaneamente ej diversa da zero.
Grazie ancora
luca62 office2007 window7
luca62
Utente Senior
 
Post: 158
Iscritto il: 23/12/12 14:54

Re: cancellare tutte le righe con condizione

Postdi ricky53 » 31/12/15 11:49

Ciao,
si non era chiaro cosa ti occorreva.
Appena posso modifico la macro.
A presto.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: cancellare tutte le righe con condizione

Postdi ricky53 » 02/01/16 00:58

Ciao,
eccomi qui come promesso.
Prova questa macro che fa quanto hai chiesto (e speriamo che non arrivi una tua risposta negativa):
Codice: Seleziona tutto
Option Explicit

Sub Cancella_Righe()
    Dim UR As Long
   
    UR = Range("K" & Rows.Count).End(xlUp).Row
    Range("A1:Z1" & UR).AutoFilter ' <<====== scelte le colonne da  'A'  a  'Z'  cambia in base ai tuoi dati
    Range("A1:Z1" & UR).AutoFilter Field:=1, Criteria1:="<>" ' <<====== scelte le colonne da  'A'  a  'Z'  cambia in base ai tuoi dati
    ActiveSheet.ShowAllData
    Selection.AutoFilter Field:=11, Criteria1:="MAG"
    UR = Range("K" & Rows.Count).End(xlUp).Row
    If UR = 1 Then
        MsgBox "NON esistono dati per le condizioni su 'MAG'", vbExclamation
    Else
        Rows("2:" & UR).Select
        Selection.Delete Shift:=xlUp
        MsgBox "Cancellazione dati con 'MAG'  Effettuata", vbInformation
    End If
   
    Range("A1:Z1" & UR).AutoFilter Field:=1, Criteria1:="<>" ' <<====== scelte le colonne da  'A'  a  'Z'  cambia in base ai tuoi dati
    ActiveSheet.ShowAllData
    Selection.AutoFilter Field:=12, Criteria1:="0"
    Selection.AutoFilter Field:=5, Criteria1:="<>0"
    UR = Range("K" & Rows.Count).End(xlUp).Row
    If UR = 1 Then
        MsgBox "NON esistono dati per le 'Condizioni Restanti'", vbExclamation
    Else
        Rows("2:" & UR).Select
        Selection.Delete Shift:=xlUp
        MsgBox "Cancellazione dati con 'Condizioni Restanti'  Effettuata", vbInformation
    End If
   
    ActiveSheet.ShowAllData
    Range("K1").Select
End Sub
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: cancellare tutte le righe con condizione

Postdi ricky53 » 05/01/16 16:49

Ciao,
hai avuto modo di provare il nuovo codice?
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: cancellare tutte le righe con condizione

Postdi luca62 » 05/01/16 18:53

BINGO!!! funziona eccome grazie ancora
luca62 office2007 window7
luca62
Utente Senior
 
Post: 158
Iscritto il: 23/12/12 14:54


Torna a Applicazioni Office Windows


Topic correlati a "cancellare tutte le righe con condizione":


Chi c’è in linea

Visitano il forum: patel e 4 ospiti