Elimina doppioni

Versione Completa   Stampa   Cerca   Utenti   Iscriviti     Condividi : FacebookTwitter
Nigel78
00venerdì 19 maggio 2017 17:16
Buongiorno.

Avrei un lavoro da portare avanti ma ho riscontrato qualche problema. Premetto che ho provato ad allegare il file, ma in questo momento ho dei problemi tecnici che non mi permettono di farlo.

Provo a spiegare.

Nella colonna A e nella colonna C ho una serie di codici. Mi serve un risultato, nella colonna P, che mi riporti i codici presenti nella colonna C che non sono già presenti nella colonna A.

Ma ciò, con la Macro che ho costruito, non accade.


Sub rimuovi_doppioni()
Dim i As Integer
Dim cella, trova As Range
i = 8
For Each cella In Range("c8:c100")
Set trova = Range("n8:n100").Find(What:=cella, LookAt:=xlPart)
If trova Is Nothing Then
Range("p" & i) = cella
i = i + 1
End If
Next cella
End Sub




Potete aiutarmi?

Grazie, Nigel.
alfrimpa
00sabato 20 maggio 2017 15:04
Nigel se vuoi aiuto un file di esempio con dati (fittizi), spiegazione e risultato desiderato inserito a mano lo devi allegare.
Nigel78
00lunedì 22 maggio 2017 10:21
Ecco, ce l'ho fatta.
Il risultato nella colonna P deve essere 127 e 132.
alfrimpa
00lunedì 22 maggio 2017 11:44
Ma nella colonna A non c'è né il 127 né il 132.

Non capisco.
Nigel78
00lunedì 22 maggio 2017 12:30
Infatti: mi serve un risultato, nella colonna P, che mi riporti i codici presenti nella colonna C che non sono già presenti nella colonna A.
alfrimpa
00lunedì 22 maggio 2017 12:41
Ah ok.
alfrimpa
00lunedì 22 maggio 2017 14:31
Ciao Nigel

Ti riallego il tuo file nel quale ho inserito la macro che vedi qui.

vb
Sub prova()
Dim ur As Long
Dim lr As Long
Dim rng As Range
Dim cel As Range
Dim intervallo As Range
lr = Cells(Rows.Count, "C").End(xlUp).Row
Set intervallo = Range("c8:c" & lr)
For Each cel In intervallo
ur = Cells(Rows.Count, "P").End(xlUp).Row
With Sheets("Foglio1").Range("A:A")
            Set rng = .Find(What:=cel.Value, _
                            After:=.Cells(.Cells.Count), _
                            LookIn:=xlValues, _
                            LookAt:=xlWhole, _
                            SearchOrder:=xlByRows, _
                            SearchDirection:=xlNext, _
                            MatchCase:=False)
            If Not rng Is Nothing Then
                Else
            Cells(ur + 1, "P").Value = cel.Value
            End If
        End With
Next cel
End Sub


Importante: per il corretto funzionamento del tutto è necessario che la cella P7 sia valorizzata (mettici una X e poi dai il colore bainco al carattere in modo da renderla invisibile; se invece c'è qualcosa lascia tutto com'è.

Fai sapere.

P.S. la prossima vota posta nella sezione "Domande e risposte".
DANILOFIORINI
00lunedì 22 maggio 2017 22:02
Buonasera a tutti oltre alla sempre ottima soluzione in VBA di Alfredo (un saluto) il risultato richiesto si può ottenere anche con le formule in P8

=SE.ERRORE(INDICE($C$8:$C$1000;PICCOLO(SE($C$8:$C$1000<>"";SE(CONTA.SE($A$8:$A$1000;$C$8:$C$1000)=0;RIF.RIGA($C$8:$C$1000)-RIF.RIGA($C$8)+1));RIGHE($P$7:P7)));"")

da attivare con i tasti CTRL+SHIFT+INVIO e trascinare in basso

ho messo 1000 ma si può allungare o accorciare a piacere
Questa è la versione 'lo-fi' del Forum Per visualizzare la versione completa clicca qui
Tutti gli orari sono GMT+01:00. Adesso sono le 20:06.
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com