Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[Excel2007] Eliminare doppioni

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

[Excel2007] Eliminare doppioni

Postdi Cele79 » 31/12/15 10:43

Salve a tutti e buone feste.
Come da titolo vorrei eliminare dei doppioni da una tabella dove vi sono dei numeri.
Non voglio usare la funzione che si usa manualmente perche deve avvenire in automatico e possibilmente tramite formula.
La formula non deve eliminare il singolo numero doppio ma la serie di numeri presenti in una riga che e uguale ad un'altra riga.

tabella

45 5
61 60
5 45
6 21 35
61 60
70 25
70 25
35 21 6
questi sono i numeri della mia tabella
Vorrei che dei doppioni ne rimanesse solo uno
45 5
61 60
6 21 35
70 25

La tabella è composta da 5 colonne e 18 righe che possono essere piene di combinazioni.
Per arrivare a quella tabella faccio altri 4 passaggi.

Vi ringrazio anticipatamente e buon anno a tutti.
Cele79
Utente Junior
 
Post: 82
Iscritto il: 14/01/14 12:32

Sponsor
 

Re: [Excel2007] Eliminare doppioni

Postdi Anthony47 » 31/12/15 19:16

[. . . ] e possibilmente tramite formula
Mi spiace, non voglio complicarmi la vita oltre il necessario e quindi ti propongo una soluzione con codice...
In un modulo standard del vba (es Modulo1) inserisci questo codice:
Codice: Seleziona tutto
Function MkDuplex(ByRef myArea As Range)
Dim ResArr(), myC As Long, myTarget As Range, myTarget2 As Range
Dim I As Long, J As Long, K As Long
'
ReDim ResArr(1 To myArea.Rows.Count)
For I = 1 To myArea.Rows.Count
    For J = 1 To I
        Set myTarget = Application.WorksheetFunction.Index(myArea, J, 0)
        Set myTarget2 = Application.WorksheetFunction.Index(myArea, I, 0)
        myC = 0
        For K = 1 To myArea.Columns.Count
            If Application.WorksheetFunction.CountIf(myTarget, myArea.Cells(I, K)) > 0 Then myC = myC + 1
        Next K
        If myC = Application.WorksheetFunction.CountA(myTarget) And _
            myC = Application.WorksheetFunction.CountA(myTarget2) Then ResArr(I) = ResArr(I) + 1
    Next J
Next I
MkDuplex = Application.WorksheetFunction.Transpose(ResArr)
End Function

Supponiamo che i tuoi dati siano in A2:E19
In una colonna libera, es in G2 inserisci questa formula:
Codice: Seleziona tutto
=MkDuplex(A2:E19)

Poi seleziona G2:G19, premi F2, premi Contr-Maiusc-Enter
A questo punto in colonna G dovresti avere l'indicazione di quante volte quella riga compare nell'elenco.
Applica il filtro automatico alla colonna G, seleziona i valori =1, copia l'area visualizzata e incollala nell'area dove vuoi solo le righe uniche.
Il risultato in colonna G si aggiorna tutte le volte che il contenuto dell'area usata nella formula MkDuplex viene aggiornato.
La fase di applicazione del filtro, selezione, copia e incolla in altra area la puoi automatizzare con una macro autoregistrata.

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

Re: [Excel2007] Eliminare doppioni

Postdi Cele79 » 01/01/16 10:20

Grazie Anthony47 per la risposta.
Sono riuscito a trovare una soluzione tramite formula e si basa su due passaggi.
Il primo è questo;
Codice: Seleziona tutto
=SE.ERRORE(CONFRONTA(CONTA.SE(EU36:EY36;">0");SE.ERRORE(--(MATR.PRODOTTO(CONTA.SE(EU36:SCARTO(ET36;0;CONTA.SE(EU36:EY36;">0"));$EU$36:$EY$43);{1\1\1\1\1}));0);0);"")

con questa formula mi trovo il ritardo della serie di numeri nella riga.
quindi se ho 10 20 come numeri nella prima riga mi scrive 1 e se quei numeri sono anche nella quinta riga mi scrive sempre 1 e cosi via. in poche parole mi scrive sempre il primo ritardo di quella serie di numeri che cerca.

Poi con questa questa formula elimino i doppioni che mi ha creato l'altra formula:
Codice: Seleziona tutto
=SE.ERRORE(INDICE(FA$36:FA$53;PICCOLO(SE(VAL.NUMERO(CONFRONTA(ET$36:ET$53;CONFRONTA(FA$36:FA$53;FA$36:FA$53;0);0));CONFRONTA(FA$36:FA$53;FA$36:FA$53;0);"");ET36));"")


poi con cerca.vert mi trovo i numeri.

A presto.
Cele79
Utente Junior
 
Post: 82
Iscritto il: 14/01/14 12:32

Re: [Excel2007] Eliminare doppioni

Postdi Cele79 » 04/01/16 06:57

Ho trovato un errore nella mia prima formula quindi non è affidabile al 100%.
Appena trovo la soluzione la postero di nuovo.
Cele79
Utente Junior
 
Post: 82
Iscritto il: 14/01/14 12:32


Torna a Applicazioni Office Windows


Topic correlati a "[Excel2007] Eliminare doppioni":


Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti