Condividi:        

confronta righe ed elimina righe uguali

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

Re: confronta righe ed elimina righe uguali

Postdi Anthony47 » 31/05/10 15:17

e se vai in debug, quale e' la riga evidenziata?

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

Sponsor
 

Re: confronta righe ed elimina righe uguali

Postdi miko » 31/05/10 18:29

salve,
sia eseguendo la macro con il tasto esegui sia con il tasto F8 l'esecuzione si interrompe
sempre in corrispondenza della linea:
-------
ActiveSheet.Paste Destination:=ActiveSheet.Range("B1")
----
con riferimento alla tua macro del 25/05/10 22:41.
mi sembra che ad excel dia fastidio la colonna L.
non conosco la sintassi ma se si scrivesse:
Selection.Insert Shift:=xlToRight +1
in modo da inserire i dati nella colonna M si risolverebbe il problema.
infatti ho inserito la colonna M al posto della L, ottenendo questa versione di macro:
Codice: Seleziona tutto
Sub UniRec()
   'Columns("B:K").Select
    Selection.Insert Shift:=xlToRight
    Columns("M:V").Select
    Range("M:V").AdvancedFilter Action:=xlFilterInPlace, Unique:=True
    Range("M:V").SpecialCells(xlCellTypeVisible).Copy
    ActiveSheet.Paste Destination:=ActiveSheet.Range("B1")
    On Error Resume Next
    ActiveSheet.ShowAllData
    On Error GoTo 0
    Columns("M:V").Select
    Selection.Delete Shift:=xlToLeft
End Sub

la macro non mi dà quell' errore di cui si parlava, ma alla fine non mi ritrovo i valori originari della colonna B.
allora ho fatto delle modifiche, ho inserito in testa alla macro altre linee ottenendo questa soluzione:
Codice: Seleziona tutto
Sub UniRec()
    Columns("B:K").Select
    Selection.Copy
    Columns("M:V").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    'Columns("M:V").Select
    Range("M:V").AdvancedFilter Action:=xlFilterInPlace, Unique:=True
    Range("M:V").SpecialCells(xlCellTypeVisible).Copy
    ActiveSheet.Paste Destination:=ActiveSheet.Range("B1")
    On Error Resume Next
    ActiveSheet.ShowAllData
    On Error GoTo 0
    Columns("M:V").Select
    Selection.Delete Shift:=xlToLeft
End Sub

in questo caso funziona perfettamente.
qualunque sia però la versione di macro usata non elimina tutte le righe uguali in una sola esecuzione ma devo ripetere il ciclo almeno 2 volte con i dati che ho inserito;
infatti la riga 1 è uguale alla riga 23, la 2 = 24 etc., cosi la macro elimina dalla riga 24 in poi nella prima esecuzione e con la seconda anche la 23.
ciao grazie
windows 10 - office 2013
miko
Utente Senior
 
Post: 520
Iscritto il: 29/12/09 10:44

Re: confronta righe ed elimina righe uguali

Postdi Anthony47 » 01/06/10 00:38

Se funziona, e' perfetta cosi', anche se in questo modo devi avere il foglio libero alla destra dei tuoi dati.

L' ipotesi che posso fare e' che la tua versione di excel nel momento in cui inserisce le colonne alla sx dei dati crea una copia dei dati. Se hai ancora voglia fai una prova inserendo questa istruzione nella macro ultima che ti passai:
Codice: Seleziona tutto
    Selection.Insert Shift:=xlToRight
    Columns("B:K").Clear    '<<< AGGIUNTA
    Columns("L:U").Select
'    etc etc

Per quanto riguarda la mancata eliminazione di una riga, prova a inserire su ogni cella di riga 1 (quindi in B1:K1) una qualsiasi intestazione (basta B, C, ... K), altrimenti la prima riga di dati e' interpretata come intestazione.

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

Re: confronta righe ed elimina righe uguali

Postdi miko » 01/06/10 08:02

ciao,
credo che la tua ipotesi sia corretta;
infatti se chiudo la cartella, dopo che ho ricevuto errore, compare una finestra che avvisa che negli appunti cè' una grande quantita di dati e se voglio renderli disponibili etc. etc.
anche inserendo la linea:
Columns("B:K").Clear '<<< AGGIUNTA
si verifica lo stesso errore.
mentre, per eliminare tutte le righe uguali in una sola esecuzione, il tuo suggerimento di inserire una intestazione ha risolto il problema.
se invece volessi sostituire queste linee:
----
Columns("B:K").Select
Selection.Copy
Columns("M:V").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
----
con
Columns("B:K").Copy Destination:=Range("M1")
quale sarebbe la sintassi corretta, perchè così come scritta viene eseguita, ma poi ricevo lo stesso errore dei precedenti casi e sempre alla stessa linea.
forse la sintassi è corretta perchè la macro viene eseguita fino ad arrestarsi alla solita linea e non ricevo errore in copy-destination.
grazie ciao.
windows 10 - office 2013
miko
Utente Senior
 
Post: 520
Iscritto il: 29/12/09 10:44

Re: confronta righe ed elimina righe uguali

Postdi Anthony47 » 01/06/10 21:44

Purtroppo nella mia versione di excel/vba non ho l' errore che tu riporti, quindi non posso dirti nulla. Ma se funziona credo che l' eleganza del codice possa passare in secondo piano.

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

Re: confronta righe ed elimina righe uguali

Postdi miko » 02/06/10 09:47

ciao,
in effetti hai ragione, dal momento che la macro funziona ed è anche rapida è superfluo modificare ulteriormente la sua struttura.
grazie, saluti
windows 10 - office 2013
miko
Utente Senior
 
Post: 520
Iscritto il: 29/12/09 10:44

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "confronta righe ed elimina righe uguali":


Chi c’è in linea

Visitano il forum: Nessuno e 39 ospiti