Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[Excel] rimuovi duplicati in "orizzontale"

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] rimuovi duplicati in "orizzontale"

Postdi c_ros » 04/02/14 12:46

Eccomi di nuovo qui a chiedere aiuto per excel....
Nellla tabella excel su cui sto lavorando avrei bisogno di eliminare i valori ripetuti presenti sulla stessa riga ma non eliminarli se presenti su altre righe. Ecco come si presenta la tabella:
15466285 15466285 15466285 20232220
21738732 21738732 21738732 19497304 22130971 22130971
15466285 21419139 21738732 21738732 21738732 20232220 19026397 22130971 22130971 22130971 22130971 22130971 22130971 22130971 22130971
15466285 15466285 15466285 15466285 15466285 15466285 15466285 15466285 21470976 19026397
15466285 21738732 21738732 21738732 18226984
15466285 15466285 15466285 15466285 15466285 15466285
19026397 19026397
16532388 16532388 21470976
20028790 20028790 20700462 20700462 11479733 22879922 22780954
15466285 15466285 15466285 15466285 15466285 15466285 15466285 15466285 15466285 15466285 15466285 15466285 22130971
15466285 15466285 21738732 21738732 21738732
quello che vorrei ottenere è che per ogni riga siano riportati i diversi valori non ripetuti.

Grazie

Ciao
c_ros
Utente Junior
 
Post: 24
Iscritto il: 06/01/14 19:39

Sponsor
 

Re: [Excel] rimuovi duplicati in "orizzontale"

Postdi ricky53 » 04/02/14 13:54

Ciao,
sarebbe utile e necessario avere anche la tabella nella versione che a te occorre ... ossia quella che vuoi ottenere dopo le eliminazioni

Puoi chiarire la tua frase
... eliminare i valori ripetuti presenti sulla stessa riga ma non eliminarli se presenti su altre righe.
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: [Excel] rimuovi duplicati in "orizzontale"

Postdi c_ros » 04/02/14 14:43

Ciao,
hai ragione sono stata molto poco chiara...
allora da
una tabella così strutturata
15466285 15466285 21738732 21738732 21738732
21858071
20700462
19026397
21738732 21738732 21738732 19527690 22110754
15466285 19026397 18226984
21296687 21296687
20028790
20643099
20700462
21738732 21738732 21738732
20006740
21470976
15466285 15466285 15466285 15466285 15466285 15466285 15466285 15466285 15466285 15466285 15466285 15466285 15466285
21787884
21419139 22130971 22130971
15466285 22039503 22039503 18226984 22130971 22130971
vorrei ottenere
15466285 21738732
21858071
20700462
19026397
21738732 19527690 22110754
15466285 19026397 18226984
21296687
20028790
20643099
20700462
21738732
20006740
21470976
15466285
21787884
21419139 22130971
15466285 22039503 18226984 22130971
questo è il link per la tabella che vorrei modificare.
Per quanto riguarda eliminare i valori ripetuti presenti sulla stessa riga ti faccio un esempio: il valore 15466285 è presente in numerose righe e questo va bene..però i voglio che sia presente solo una volta per ogni riga...spero di essermi fatta capire.

Grazie
ciao
c_ros
Utente Junior
 
Post: 24
Iscritto il: 06/01/14 19:39

Re: [Excel] rimuovi duplicati in "orizzontale"

Postdi c_ros » 04/02/14 14:45

c_ros
Utente Junior
 
Post: 24
Iscritto il: 06/01/14 19:39

Re: [Excel] rimuovi duplicati in "orizzontale"

Postdi ricky53 » 04/02/14 14:54

Ciao,
nel file non hai riportato cosa vorresti ottenere: ossia la versione della tua tabella dopo le cancellazioni.

Con il tuo esempio:
se il codice "15466285" fosse presente, più volte, ma solo sulla stessa riga tu cosa vorresti ottenere?

Io ho dedotto: qualunque siano le condizioni (codice presente più volte sia su una sola riga sia su più righe) il codice dovrà essere presente una sola volta per riga !!!

E' così?

Se invii, come chiesto, la tabella come la vorresti ottenere sarebbe meglio.
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: [Excel] rimuovi duplicati in "orizzontale"

Postdi c_ros » 04/02/14 15:04

io eliminare tutte le ripetizioni del codice "15466285" sulla stessa riga.
Questo è il link di un esempio (poche righe) del file che vorrei ottenere
http://rapidshare.com/share/04CBA230B1D ... 471596EF26
c_ros
Utente Junior
 
Post: 24
Iscritto il: 06/01/14 19:39

Re: [Excel] rimuovi duplicati in "orizzontale"

Postdi c_ros » 04/02/14 15:22

* vorrei
Cerco di chiarire quello che intendo ottenere:
Per ogni riga che va dalla colonna A alla colonna AVB vorrei che ogni valore fosse presente solo una volta e non ripetuto.
Quindi se ho una riga in cui c'è 1111111111111111222222222222222223333333333333333333444444444444444
vorrei ottenere una riga 1234.
c_ros
Utente Junior
 
Post: 24
Iscritto il: 06/01/14 19:39

Re: [Excel] rimuovi duplicati in "orizzontale"

Postdi ricky53 » 04/02/14 16:29

Ciao,
quindi alla mia domanda
qualunque siano le condizioni (codice presente più volte sia su una sola riga sia su più righe) il codice dovrà essere presente una sola volta per riga
cosa rispondi?
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: [Excel] rimuovi duplicati in "orizzontale"

Postdi c_ros » 04/02/14 16:42

Si il codice dovrà essere presente una sola volta per riga.
c_ros
Utente Junior
 
Post: 24
Iscritto il: 06/01/14 19:39

Re: [Excel] rimuovi duplicati in "orizzontale"

Postdi Anthony47 » 04/02/14 22:48

Mi pare che una macro come questa dovrebbe funzionare:
Codice: Seleziona tutto
Sub Roxx()
Dim I As Long, J As Long, JJ As Long, OutSh As String
'
OutSh = "PIPPO"      '<< Foglio di uscita; vedi testo
'
If ActiveSheet.Name = OutSh Then
    MsgBox ("Selezionare il foglio di partenza e ripetere")
    Exit Sub
End If
Sheets(OutSh).Cells.ClearContents
For I = 1 To Cells(Rows.Count, 1).End(xlUp).Row
    For J = 1 To Cells(I, Columns.Count).End(xlToLeft).Column
        If Application.WorksheetFunction.CountIf(ActiveSheet.UsedRange, Cells(I, J).Value) > 1 Then
            If Application.WorksheetFunction.CountIf(ActiveSheet.UsedRange, Cells(I, J)) > _
               Application.WorksheetFunction.CountIf(Rows(I), Cells(1, J)) _
               And Application.WorksheetFunction.CountIf(Sheets(OutSh).Rows(I), Cells(I, J)) = 0 Then
                Sheets(OutSh).Cells(I, J).Value = Cells(I, J)
            End If
        Else
            Sheets(OutSh).Cells(I, JJ).Value = Cells(I, J)
            JJ = JJ + 1
        End If
    DoEvents
    Next J
DoEvents
Next I
End Sub
Impostare il nome del foglio in cui verra' creato l' elenco modificato; tornare su excel, selezionare il foglio con i dati di partenza e lanciare la macro. NB: il foglio di output deve gia' esistere e SARA' AZZERATO SENZA PREAVVISO a inizio macro.

Fai sapere, 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: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] rimuovi duplicati in "orizzontale"

Postdi c_ros » 05/02/14 18:09

Ciao Anthony,

ho provato ad utilizzare la tua macro ma mi dice che c'è un errore e il debug è il seguente:
Sheets(OutSh).Cells(I, JJ).Value = Cells(I, J)

La macro parte e poi mi dà errore..

Ciao
c_ros
Utente Junior
 
Post: 24
Iscritto il: 06/01/14 19:39

Re: [Excel] rimuovi duplicati in "orizzontale"

Postdi Flash30005 » 06/02/14 00:50

ma il tuo foglio OutSh si chiama "PIPPO" ?
se non si chiama PIPPO devi cambiare il nome nella macro

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel] rimuovi duplicati in "orizzontale"

Postdi Anthony47 » 06/02/14 01:07

Si, probabilmente hai trascurato qualche istruzione, in verita' un po' defilata:
Impostare il nome del foglio in cui verra' creato l' elenco modificato; tornare su excel, selezionare il foglio con i dati di partenza e lanciare la macro. NB: il foglio di output deve gia' esistere. . .

Io come foglio di output avevo impostato "PIPPO" (vedi istruzione marcata <<); tu cosa hai impostato? Il foglio esiste?

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

Re: [Excel] rimuovi duplicati in "orizzontale"

Postdi c_ros » 06/02/14 11:17

Si il foglio di output esiste. Ho rinominato il foglio 2 in "PIPPO" e lancio la macro dopo aver riselezionato il foglio1 dove ci sono i dati di partenza. Adesso ho riprovato e per il momento non si blocca ma è già da dieci minuti che ho lanciato la macro e mi dice in esecuzione.
E' normale che sia così?
c_ros
Utente Junior
 
Post: 24
Iscritto il: 06/01/14 19:39

Re: [Excel] rimuovi duplicati in "orizzontale"

Postdi c_ros » 06/02/14 11:21

E' appena ricomparso lo stesso errore e andando a vedere il foglio di output la macro ha funzionato fino alla riga 1090 mentre il foglio di partenza ne ha 2140...
c_ros
Utente Junior
 
Post: 24
Iscritto il: 06/01/14 19:39

Re: [Excel] rimuovi duplicati in "orizzontale"

Postdi Flash30005 » 06/02/14 13:06

Aggiungi la riga codice evidenziata dove indicato
Codice: Seleziona tutto
If ActiveSheet.Name = OutSh Then   '<<<<<<<<<<<<<<<< esistente
    MsgBox ("Selezionare il foglio di partenza e ripetere")  '<<<<<<<<<<<<<<<< esistente
    Exit Sub  '<<<<<<<<<<<<<<<< esistente
End If  '<<<<<<<<<<<<<<<< esistente
JJ = 1  '<<<<<<<<<<<<<<<< aggiungere qui
'...
'...


Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel] rimuovi duplicati in "orizzontale"

Postdi Anthony47 » 06/02/14 14:23

La modifica suggerita da Flash probabilmente elimina l' errore, pero' non produce l' output corretto (la scrittura viene sovrapposta a celle probabilmente gia' compilate).
Il fatto e' che avevo impostato la macro per scrivere nel foglio di output una colonna dopo l' altra, usando JJ; la richiesta era pero' di scrivere le celle nella stessa posizione in cui comparivano nel foglio sorgente, pertanto alla fine ho switchato dal JJ al J, ma per ERRORE ho riportato la modifica in una sola gamba del codice.
Per il risultato corretto della mia macro le righe
Sheets(OutSh).Cells(I, JJ).Value = Cells(I, J)
JJ = JJ + 1
vanno sostituite con
Codice: Seleziona tutto
            Sheets(OutSh).Cells(I, J).Value = Cells(I, J)


Sul file pubblicato la macro non durava "una eternità"; se la durata e' un problema posso provare con una versione piu' veloce (ma solo dopo aver avuto conferma che l' esito e' ok).

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

Re: [Excel] rimuovi duplicati in "orizzontale"

Postdi c_ros » 06/02/14 15:27

Purtroppo non va, ho provato con entrambe le modifiche suggerite...
Per quanto riguarda il foglio di output va benissimo avere le colonne una dopo l'altra (JJ).
c_ros
Utente Junior
 
Post: 24
Iscritto il: 06/01/14 19:39

Re: [Excel] rimuovi duplicati in "orizzontale"

Postdi ninai » 06/02/14 17:33

Ciao
una soluzione più "casereccia" potrebbe essere, mettere in una cella, (esempio A1 di un altro foglio):
=SE(O(CONTA.SE(Foglio1!$A1:A1;Foglio1!A1)>1;Foglio1!A1="");"";Foglio1!A1)
e trascinare in basso ed a destra a piacere.

EDIT
certo è che se le celle cono centinaia di migliaia, la cosa si appesantisce e ci vuole il VBA

ALLEGO FILE DI ESEMPIO
https://www.dropbox.com/s/tqlyyl3syea1e ... UbMed.xlsx
w8 + Office 2010 Ita
ninai
Utente Senior
 
Post: 271
Iscritto il: 12/06/13 05:23
Località: prov. Messina

Re: [Excel] rimuovi duplicati in "orizzontale"

Postdi Anthony47 » 06/02/14 21:06

Guarda l' ipotesi di ninai, sopra.

La struttura dell' output era descritta nel file "prova output.xlsx":
Immagine

E questo e' quello che la macro produce:
Immagine
Certo, non tutto il risultato e' limpido come nelle immagini precedenti...
Ci sono righe che risultano vuote, es le 869, 1133 e 1547 (vuote gia' nell' origine); ci sono righe che hanno un secondo valore (dopo quello in colonna A) che compare in colonne ben fuori vista: ce ne sono 84 dove la seconda colonna e' oltre la 20; 34 oltre la trenta; 15 oltre la cinquanta; e 3 che compilano colonna A e poi solo la col. KX (la n° 310).

Ora in tutto questo che cosa "non va"? Che prove hai eseguito, con quali risultati ottenuti e quali risultati invece attesi?

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

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "[Excel] rimuovi duplicati in "orizzontale"":


Chi c’è in linea

Visitano il forum: Nessuno e 63 ospiti