Eliminare i doppioni



  • Eliminare i doppioni
    di peperoncino data: 21/11/2013 15:06:31

    Ho un file in Excel dei miei film
    io vorrei che qundo inserisco un nuovo film, non sia un doppione di quello
    che ho inserito.
    che codice dovrei usare
    frazie peperoncino



  • di nichicanta (utente non iscritto) data: 21/11/2013 15:46:03

    Prova questo codice, vedi se va bene.
    Ciao.
     
    Sub EliminaDoppioni()
    'Questo codice ordina i dati nella seconda
    'colonna del foglio Dati ed elimina le righe che
    'contengono dati duplicati.
    Application.ScreenUpdating = False
    Range("B4:B800").Select
    Selection.Sort Key1:=Range("B4"), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
    
    Set currentCell = Worksheets("Dati").Range("B4")
    Do While Not IsEmpty(currentCell)
    Set nextCell = currentCell.Offset(1, 0)
    If nextCell.Value = currentCell.Value Then
    currentCell.EntireRow.Delete
    End If
    Set currentCell = nextCell
    Loop
    Range("B4").Select
    
    End Sub
    



  • di totygno71 data: 21/11/2013 15:46:44

    Peperoncino
    hai scambiato questo forum per un mercatino???

    Prova a produrre qualcosa anche tu... cosi da poterti indirizzare.



  • di nichicanta (utente non iscritto) data: 21/11/2013 15:52:32

    Ciao totygno71, vedo che non rispondi quasi mai alle mie richieste di aiuto ( lo so che ti ho offeso, tempo fa ma non volevo, avevo scambiato erroneamente le tue battute, ora ho notato che vuoi sempre scherzare ecc. non continuo perchè sono capace sempre di guastare tutto).
    Ti chiedo solo di dimenticare quel brutto episodio e se puoi perdonami, in relatà sono anch'io molto allegro e scherzoso.
    Ti saluto e ti ringrazio ( insieme a tutti gli altri amici del forum )per tutto quello che fate.



  • di Raffaele_53 (utente non iscritto) data: 21/11/2013 16:36:00

    X nichicanta
    Non era rivolto a Te il pensiero

    Comunque credo che la soluzione sia nel Sub Worksheet_Change(ByVal Target As Range)
    Domani lo vedo, però ad una condizione?
    Se il film si chiama AAA BBB e Lui digita AAA BBB non funziona.
    NB i due differenti spazi tra AAA BBB



  • di Raffaele_53 (utente non iscritto) data: 21/11/2013 16:40:54

    Il forum nasconde due spazi, riprovo
     
    Se il film si chiama AAA BBB e Lui digita AAA  BBB non funziona. 



  • di Raffaele_53 (utente non iscritto) data: 22/11/2013 12:56:50

    Ammettiamo che la lista dei Film sia in colonna A
    Appena digiti un Film già inserito viene cancellato
    Questo codice non è da mettere in un modulo, direttamente sul foglio dove hai la lista.


     
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Not Intersect(Target, Range("A:A")) Is Nothing Then
        	Nome = Target.Offset(0, 0).Value
        	If Application.WorksheetFunction.CountIf(Range("A:A"), Nome) > 1 Then
        		MsgBox "Film già inserito"
        		Target.Offset(0, 0) = ""
        	End If
        End If
    End Sub


  • Eliminare doppioni
    di peperoncino (utente non iscritto) data: 22/11/2013 15:42:56

    in che senso devo mettere il codice sul foglio e non sul modulo????
    peperoncino


  • Eliminare doppioni
    di peperoncino (utente non iscritto) data: 22/11/2013 16:25:52

    il codice funziona sola dal foglio inserito il codice, ma io inserisco, il mio filma da una scheda, sul foglio1 nominato, scheda è ho come codice
    il seguente:

     
    Sub Macro1()
        
        ' --- imposta come foglio di destinazione il foglio2
        Dim FoglioDestino As Object
        Set FoglioDestino = Foglio2
        
        ' --- imposta come intervallo di destinazione la prima riga vuota partendo dall'ultima (B65536)
        ' --- l'intervallo deve essere ridimensionato con lo stesso numero di colonne contenute
        ' --- nell'intervallo di origine, in questo esempio l'intervallo di origine è composto da 4 colonne
        ' --- dato che è rappresentato dalle celle B3:I3 e quindi con Resize l'intervallo di destinazione
        ' --- che è composto da una sola colonna (B) viene ridimensionato a 7
        Dim RangeDestino As Range
        Set RangeDestino = FoglioDestino.Cells(65536, 2).End(xlUp).Offset(1, 0).Resize(1, 8)
    
        ' --- con questa istruzione le formule contenute nel foglio di origine vengono trasformate in
        ' --- valori nel foglio di destinazione
        RangeDestino.Value = Range("C8:J8").Value
        
        MsgBox "Dati copiati!!", vbInformation, " E vai!!!!"
        
    End Sub



  • di Perry (utente non iscritto) data: 22/11/2013 18:47:53

    Scusate ho sbagliato ad allegare un file per un altro post.



  • di Raffaele_53 (utente non iscritto) data: 22/11/2013 20:42:01

    La struttura del Tuo allegato = Archivio Films in Divx (l'altro che vedo ha una caratterisca "molto particolare" che non conosco)

    Comunque è un files strutturato in un certo modo "forse autorevole" ma non credo. (non sò se lo avevi allegato al primo post, forse non l'ho visto e ho dato una mia soluzione personale senza vederlo)
    Mettere mano a lavori già fatti, non sono capace.

    Ci provo, usi la macro1 per scrivere nel foglio "Archivio"
    Dove in teoria con il mio codice facevi già "scrivendo un qualcosa"
    Abbinare le due macro??????????'

    Forse sarà così, ma non sono sicuro.
     
    Sub Macro1()
        Dim FoglioDestino As Object
        Set FoglioDestino = Foglio2
        Dim RangeDestino As Range, Film As String
        Set RangeDestino = FoglioDestino.Cells(65536, 2).End(xlUp).Offset(1, 0).Resize(1, 8)
        '-----------------
        URiga = Sheets("archivio").Range("B" & Rows.Count).End(xlUp).Row
            Film = Sheets("Scheda").Cells(8, 3) ' Titolo dove hai scritto
        '----------------------------
        If Sheets("archivio").Application.WorksheetFunction.CountIf(Range("B:B"), Film) > 1 Then
                MsgBox "Film già inserito, non inserisco nulla"
           Else
                RangeDestino.Value = Range("C8:J8").Value
                MsgBox "Dati copiati!!", vbInformation, " E vai!!!!"
        End If
    End Sub