Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

creazione macro per eliminare righe con determinate ripetizioni

Ultimo Aggiornamento: 15/10/2018 21:23
Post: 1
Registrato il: 14/10/2018
Città: MILANO
Età: 34
Utente Junior
Excel 2007
OFFLINE
14/10/2018 16:07

Salve, secondo voi sarebbe possibile creare una macro per eliminare righe che hanno in determinate colonne valori o dati uguali contemporaneamente.

Per esempio che mi trasformi una lista del genere:

A...........B..........C..........D..........F

maria rosa pere meloni verde

mario rossi pere meloni rosso

mario rossi pere meloni giallo

mario rossi pere arance nero

mario rossi pere arance viola



in (eliminando le ripetizioni uguali contemporaneamente solo nelle colonne A B C D) :

maria rosa pere meloni verde

mario rossi pere meloni rosso

mario rossi pere arance nero



Quindi che mi elimini le righe che risultino uguali solo in determinate colonne.

Scusate la banalità dell'esempio
[Modificato da Miles900 14/10/2018 16:09]
Post: 5.512
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
14/10/2018 17:55

Elimina dati
Ciao Inserisci un file con i dati e segnala quelle righe che devono essere eliminate.

un esempio anche se fatto manualmente.

Ciao By Sal [SM=x423051]

[Modificato da by sal 14/10/2018 17:55]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 1
Registrato il: 14/10/2018
Città: MILANO
Età: 34
Utente Junior
Excel 2007
OFFLINE
14/10/2018 19:19

Ok, ho riproposto lo stesso esempio, ho messo nella prima pagina la lista e nella seconda come dovrebbe uscire dopo la macro. Le righe che si dovrebbero eliminare sono la 4 e la 6 perché le colonne A,B,C,D (nome cognome frutta1 frutta2) sono uguali contemporaneamente; la colonna E (colore) non interessa se uguale o differente.
Spero di essere stato chiaro, il file a cui devo applicare questa macro non posso postarlo perché contiene dati sanitari, il mio intendo è eliminare in una lunga lista i doppioni di certe righe dove nello stesso paziente è isolato lo stesso batterio per poter fare delle statistiche.
Se potrai aiutarmi te ne sarò grato; in ogni caso ti ringrazio anticipatamente
Post: 3.153
Registrato il: 03/04/2013
Utente Master
Excel 2000 - 2013
OFFLINE
15/10/2018 08:56

Buona giornata, Miles;
molto probabilmente la mia risposta non è rispondente alle tue esigenze ma tant'è.

Voglio dire se il risultato che chiedi:
-    maria rosa pere meloni verde
-    mario rossi pere meloni rosso
-    mario rossi pere arance nero
può essere ridotto in:
-    maria rosa pere meloni
-    mario rossi pere meloni
-    mario rossi pere arance
La soluzione potrebbe essere banale ma non so se questo è compatibile con le tue esigenze.

In caso contrario bisognerebbe lavorare molto sul Codice VBA.




A disposizione.

Buon Lavoro.

Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 2
Registrato il: 14/10/2018
Città: MILANO
Età: 34
Utente Junior
Excel 2007
OFFLINE
15/10/2018 10:08

Buon giorno anche a te, ho pochissima esperienza con VBA. Pensavo che esistesse già qualche codice per eliminare le righe ripetute in determinate colonne da applicare al mio esempio.
[Modificato da Miles900 15/10/2018 10:09]
Post: 2.095
Registrato il: 21/03/2008
Città: LOCATE VARESINO
Età: 76
Utente Veteran
2007 / 13
OFFLINE
15/10/2018 10:20

ciao

per il tuo esempio un codice VBA potrebbe essere questo sfruttando
una colonna di appoggio solo per eseguire la sub e la funzione
MATR.SOMMA.PRODOTTO() temporaneamente

da mettere nel modulo del foglio


Option Explicit
Sub EliminaDoppi()
'
Dim i As Long
Dim Nrig As Long
Nrig = Cells(Rows.Count, 1).End(xlUp).Row
Range("O1").Select
ActiveCell.FormulaR1C1 = _
"=SUMPRODUCT((R1C1:RC1=RC1)*(R1C2:RC2=RC2)*(R1C4:RC4=RC4))"
Range("O1").Select
Selection.AutoFill Destination:=Range("O1:O" & Nrig), Type:=xlFillDefault
For i = Nrig To 2 Step -1
If Cells(i, "O") > 1 Then Rows(i).Delete
Next i
Columns("O").ClearContents
End Sub



Ciao da locate
excel 2007 / 13
Post: 5.513
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
15/10/2018 10:28

Elimina righe
Ciao Miles, il problema anche con l'esempio che hai fatto, non è molto chiaro, perche non ci sono basi per determinare, quale riga eliminare.

dici che sono dati sanitari, ed è logico la privacy, nessuno vuole invaderla ci mancherebbe.

ma se metti i dati originali eliminando riferimenti ad ambulatorio ospedale ed i pazienti li nomini, paz1-paz2--etc.. anche una decina di righe, non credo che si potrebbe risalire ad i nomi originali.

ma dovresti specificare bene quale dovrebbe essere il principio per eliminare le righe.

può anche capitare che frutta1 e frutta2 siano invertite come si considera tale caso.

Ciao By Sal [SM=x423051]

se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 3.154
Registrato il: 03/04/2013
Utente Master
Excel 2000 - 2013
OFFLINE
15/10/2018 11:20

Buona giornata, a Tutti;
molto interessante la soluzione di @locatevaresino, che saluto e merita un "Mi piace".
Molto indegnamente mi permetto di suggerire un controllo anche sulla Colonna "C"; vuoi mai che oltre alle "pere" ci scappi anche qualche "mela"?  
Voglio dire, l'istruzione:
 ActiveCell.FormulaR1C1 = "=SUMPRODUCT((R1C1:RC1=RC1)*(R1C2:RC2=RC2)*(R1C4:RC4=RC4))"

Proporrei di modificarla in:
 ActiveCell.FormulaR1C1 = "=SUMPRODUCT((R1C1:RC1=RC1)*(R1C2:RC2=RC2)*(R1C3:RC3=RC3)*(R1C4:RC4=RC4))"




A disposizione.

Buon Lavoro.

Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 3
Registrato il: 14/10/2018
Città: MILANO
Età: 34
Utente Junior
Excel 2007
OFFLINE
15/10/2018 21:23

Siete grandi! Problema risolto sia con la magistrale macro di locatevaresino e grazie a Giuseppe per la modifica che con la funzione DATI/RIMUOVI DUPLICATI.
Questo lavoro servirà a migliorare con delle statistiche il trattamento per alcune patologie anche grazie al vostro contributo (io ci sarei stato una vita a selezionare manualmente i dati).
Grazie a tutti per il supporto!
Vota: 15MediaObject5,0019 1
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 08:37. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com