Excel Forum Per condividere esperienze su Microsoft Excel

creazione macro per eliminare righe con determinate ripetizioni

  • Messaggi
  • OFFLINE
    Miles900
    Post: 1
    Registrato il: 14/10/2018
    Città: MILANO
    Età: 34
    Utente Junior
    Excel 2007
    00 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]
  • OFFLINE
    by sal
    Post: 5.512
    Registrato il: 14/11/2004
    Utente Master
    Office 2019
    00 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
  • OFFLINE
    Miles900
    Post: 1
    Registrato il: 14/10/2018
    Città: MILANO
    Età: 34
    Utente Junior
    Excel 2007
    00 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
  • OFFLINE
    GiuseppeMN
    Post: 3.153
    Registrato il: 03/04/2013
    Utente Master
    Excel 2000 - 2013
    00 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
  • OFFLINE
    Miles900
    Post: 2
    Registrato il: 14/10/2018
    Città: MILANO
    Età: 34
    Utente Junior
    Excel 2007
    00 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]
  • OFFLINE
    locatevaresino
    Post: 2.095
    Registrato il: 21/03/2008
    Città: LOCATE VARESINO
    Età: 76
    Utente Veteran
    2007 / 13
    10 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
  • OFFLINE
    by sal
    Post: 5.513
    Registrato il: 14/11/2004
    Utente Master
    Office 2019
    00 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
  • OFFLINE
    GiuseppeMN
    Post: 3.154
    Registrato il: 03/04/2013
    Utente Master
    Excel 2000 - 2013
    00 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
  • OFFLINE
    Miles900
    Post: 3
    Registrato il: 14/10/2018
    Città: MILANO
    Età: 34
    Utente Junior
    Excel 2007
    00 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!
  • 15MediaObject5,0019 1