Pagina 1 di 2 12 UltimaUltima
Risultati da 1 a 30 di 33

Discussione: Confronto tra colonne: estrazione valori non doppi.



  1. #1
    L'avatar di GioPL
    Clicca e Apri
    Data Registrazione
    Dec 2015
    LocalitÓ
    Varsavia
    EtÓ
    42
    Messaggi
    68
    Versione Office
    Excell 2007
    Likes ricevuti
    0
    Likes dati
    23

    Cool Confronto tra colonne: estrazione valori non doppi.

    Buon giorno smanettoni di EXCEL.
    Problema: ricevo dati incolonnati che devo confrontare fra di loro ed estrarre i valori non doppi.
    Avevo gia' avuto un aiutone nella sezione excell generico e funziona solo che colonne con 5000 pezzi il pc ci inpiega qualche.....minuto di troppo. Ecco perche' mi rivolgo alla sezione VBA.
    Ho gia' preparato una struttura di programma in VBA ma va.....cortesemente completata.

    Per chiarire quanto c'e' nel file:
    colonna A e colonna B: parametri da confrontare
    colonna C: valori estratti dalla colonna A (in genere quella piu' lunga) non doppiati nella colonna B.

    Grazie in anticipo....
    File Allegati File Allegati

  2. #2
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    LocalitÓ
    Catania
    EtÓ
    73
    Messaggi
    3209
    Versione Office
    Excel2010
    Likes ricevuti
    625
    Likes dati
    155

    Re: Confronto tra colonne: estrazione valori non doppi.

    Ciao Gio
    fra le mie scartoffie ho trovato la macro che ti allego (non mia) che sembra abbastanza veloce.

    Codice: 
    Sub ParagonaAeB()
    Dim rngA As Range
    Dim rngB As Range
    Dim rw As Long
    Set rngA = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
    Set rngB = Range(Cells(1, 2), Cells(Rows.Count, 2).End(xlUp))
    rw = 1
    For Each cell In rngA
        If Application.CountIf(rngB, cell.Value) = 0 Then
            Cells(rw, 3).Value = cell.Value
            rw = rw + 1
        End If
    Next
    End Sub
    Prova e fai sapere. Ciao,
    Mario

  3. I seguenti 3 utenti hanno dato un "Like" a Marius44 per questo post:


  4. #3
    L'avatar di GioPL
    Clicca e Apri
    Data Registrazione
    Dec 2015
    LocalitÓ
    Varsavia
    EtÓ
    42
    Messaggi
    68
    Versione Office
    Excell 2007
    Likes ricevuti
    0
    Likes dati
    23

    Re: Confronto tra colonne: estrazione valori non doppi.

    Non ho parole....grazie .
    Funziona egregiamente. Qualche piccola aggiunta ed e' quello che mi serve.
    Raga'..siete forti.

  5. #4
    L'avatar di Cuc¨^_^
    Clicca e Apri
    Data Registrazione
    Jun 2016
    LocalitÓ
    TrentoGallipoliTaranto
    EtÓ
    46
    Messaggi
    310
    Versione Office
    2010
    Likes ricevuti
    57
    Likes dati
    17

    Re: Confronto tra colonne: estrazione valori non doppi.

    Io l'avevo pensato cosý, leggermente diverso da quello di Marius (ciao), ma ritorna risultati diversi ...

    Codice: 
    Option Explicit
    
    Sub Confronta_Colonne()
    'By Cuc¨
    Dim dict As Object
    Dim Ir As Long, Ur As Long, ICount As Long
    Dim XValue As Variant, Key As Variant
    
    
    Set dict = CreateObject("Scripting.Dictionary")
    Application.ScreenUpdating = False
    
    
    Columns(3).ClearContents
    Ur = Range("A" & Rows.Count).End(xlUp).Row
    For Ir = 1 To Ur
        dict.Add Key:=Ir, Item:=Cells(Ir, 1).Value
    Next Ir
    
    
    ICount = 0
    Ur = Range("B" & Rows.Count).End(xlUp).Row
    For Ir = 1 To Ur
    XValue = Cells(Ir, 2)
        For Each Key In dict.Keys
            If dict(Key) = XValue Then
                If Application.WorksheetFunction.CountIf(Range("C:C"), XValue) = 0 Then
                    ICount = ICount + 1
                    Cells(ICount, 3) = XValue
                End If
            End If
        Next Key
    Next Ir
       
    Set dict = Nothing
    MsgBox "Trovati " & ICount & " doppioni!"
    Application.ScreenUpdating = True
        
    End Sub
    ----------Post unito in automatico----------

    Forse bisogna fare questa piccola correzione...
    Citazione Originariamente Scritto da Marius44 Visualizza Messaggio
    Ciao Gio
    fra le mie scartoffie ho trovato la macro che ti allego (non mia) che sembra abbastanza veloce.

    Codice: 
    Sub ParagonaAeB()
    Dim rngA As Range
    Dim rngB As Range
    Dim rw As Long
    Set rngA = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
    Set rngB = Range(Cells(1, 2), Cells(Rows.Count, 2).End(xlUp))
    rw = 1
    For Each cell In rngA
        If Application.CountIf(rngB, cell.Value) > 0 Then
            Cells(rw, 3).Value = cell.Value
            rw = rw + 1
        End If
    Next
    Range("C:C").RemoveDuplicates Columns:=1, Header:=xlNo
    
    
    End Sub
    Prova e fai sapere. Ciao,
    Mario

  6. #5
    L'avatar di GioPL
    Clicca e Apri
    Data Registrazione
    Dec 2015
    LocalitÓ
    Varsavia
    EtÓ
    42
    Messaggi
    68
    Versione Office
    Excell 2007
    Likes ricevuti
    0
    Likes dati
    23

    Re: Confronto tra colonne: estrazione valori non doppi.

    Sorry CUCU' ma ho provato le tue modifiche all'algoritmo di MARIUS e il risultato e' ...l'opposto. Nella colonna C mi mette i doppioni.

  7. #6
    L'avatar di Cuc¨^_^
    Clicca e Apri
    Data Registrazione
    Jun 2016
    LocalitÓ
    TrentoGallipoliTaranto
    EtÓ
    46
    Messaggi
    310
    Versione Office
    2010
    Likes ricevuti
    57
    Likes dati
    17

    Re: Confronto tra colonne: estrazione valori non doppi.

    Scusa ho letto male... "NON DOPPIATI" ho interpretato "DOPPIATI"
    Sono rinco stamattina

  8. #7
    L'avatar di GioPL
    Clicca e Apri
    Data Registrazione
    Dec 2015
    LocalitÓ
    Varsavia
    EtÓ
    42
    Messaggi
    68
    Versione Office
    Excell 2007
    Likes ricevuti
    0
    Likes dati
    23

    Re: Confronto tra colonne: estrazione valori non doppi.

    No problem....grazie comunque per l'interessamento

  9. #8

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    LocalitÓ
    Como
    EtÓ
    53
    Messaggi
    7132
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2063
    Likes dati
    1299

    Re: Confronto tra colonne: estrazione valori non doppi.

    Ciao a tutti,
    un'alternativa Ŕ quella di filtrare nella stessa colonna gli univoci risultatnti dal confronto tra le due colonne

    Codice: 
    Sub confronta_colonne()
    Dim rng As Integer, i As Integer, uRow1 As Long, uRow2 As Long
    Application.ScreenUpdating = False
    uRow1 = Cells(Rows.Count, 1).End(xlUp).Row
    uRow2 = Cells(Rows.Count, 1).End(xlUp).Row
    rng = Range(Cells(1, 1), Cells(uRow1, 1)).Rows.Count
    For Each x In Range("B1:B" & uRow2)
       For i = 1 To rng
          If x.Value = Cells(i, 1).Value Then
            Cells(i, 1).Delete xlShiftUp
              i = i + 1
          End If
       Next i
    Next
    Application.ScreenUpdating = True
    End Sub
    File Allegati File Allegati
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se pu˛ sembrare improbabile, non pu˛ che essere quella giusta!

  10. #9

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    LocalitÓ
    Verona Provincia
    EtÓ
    57
    Messaggi
    1017
    Versione Office
    .
    Likes ricevuti
    366
    Likes dati
    0

    Re: Confronto tra colonne: estrazione valori non doppi.

    Ciao,

    la soluzione di Mario Ŕ ottima perchÚ esegue un solo ciclo, per˛ .... lo esegue sulla colonna pi¨ popolata
    valori estratti dalla colonna A (in genere quella piu' lunga) non doppiati nella colonna B
    .

    PoichÚ GioPl dice
    funziona solo che colonne con 5000 pezzi il pc ci inpiega qualche.....minuto di troppo
    propongo, giusto per partecipare, un'alternativa (una variazione ad una mia vecchia "gloria"): si tratta di costruire una stringa di tutti i valori in colonna A e di eliminare (con Replace) i caratteri presenti in colonna B; in questo modo si ciclano i soli valori di colonna B.

    I tempi, su 5.000 righe passano da una media di 0,328 secondi della sub di Mario a 0,039 della mia ....

    Codice: 
    Sub FiltraAdaB()
      'by scossa
      Dim rngA As Range
      Dim rngB As Range
      Dim arA As Variant
      Dim arB As Variant
      Dim sA As String
      Dim vEle As Variant
      Dim nStart As Single
      Dim nStop As Single
      
      nStart = Timer
      Set rngA = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
      Set rngB = Range(Cells(1, 2), Cells(Rows.Count, 2).End(xlUp))
      arB = Application.Transpose(rngB.Value)
      sA = "#" & Join(Application.Transpose(rngA.Value), "#") & "#"
      
      For Each vEle In arB
        sA = Replace(sA, "#" & vEle & "#", "#")
      Next
      
      sA = Mid(sA, 2, Len(sA) - 2)
      arA = Split(sA, "#")
      Set rngA = Range(Cells(1, 3), Cells(UBound(arA), 3))
      rngA.Value = Application.Transpose(arA)
      Set rngA = Nothing
      Set rngB = Nothing
      nStop = Timer
      Debug.Print nStop - nStart
      MsgBox "terminato in " & nStop - nStart
    
    End Sub
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  11. I seguenti 4 utenti hanno dato un "Like" a scossa per questo post:


  12. #10

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    LocalitÓ
    Como
    EtÓ
    53
    Messaggi
    7132
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2063
    Likes dati
    1299

    Re: Confronto tra colonne: estrazione valori non doppi.

    Citazione Originariamente Scritto da scossa Visualizza Messaggio
    Ciao,

    ...
    propongo, giusto per partecipare, un'alternativa (una variazione ad una mia vecchia "gloria"): si tratta di costruire una stringa di tutti i valori in colonna A e di eliminare (con Replace) i caratteri presenti in colonna B; in questo modo si ciclano i soli valori di colonna B.
    ....

    Codice: 
    Sub FiltraAdaB()
      'by scossa
      Dim rngA As Range
      Dim rngB As Range
      Dim arA As Variant
      Dim arB As Variant
      Dim sA As String
      Dim vEle As Variant
      Dim nStart As Single
      Dim nStop As Single
      
      nStart = Timer
      Set rngA = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
      Set rngB = Range(Cells(1, 2), Cells(Rows.Count, 2).End(xlUp))
      arB = Application.Transpose(rngB.Value)
      sA = "#" & Join(Application.Transpose(rngA.Value), "#") & "#"
      
      For Each vEle In arB
        sA = Replace(sA, "#" & vEle & "#", "#")
      Next
      
      sA = Mid(sA, 2, Len(sA) - 2)
      arA = Split(sA, "#")
      Set rngA = Range(Cells(1, 3), Cells(UBound(arA), 3))
      rngA.Value = Application.Transpose(arA)
      Set rngA = Nothing
      Set rngB = Nothing
      nStop = Timer
      Debug.Print nStop - nStart
      MsgBox "terminato in " & nStop - nStart
    
    End Sub
    Pazzesco!
    Quando leggo le soluzioni di scossa - che saluto - mi rendo conto che non so nulla di vba!!!!
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se pu˛ sembrare improbabile, non pu˛ che essere quella giusta!

  13. #11
    L'avatar di GioPL
    Clicca e Apri
    Data Registrazione
    Dec 2015
    LocalitÓ
    Varsavia
    EtÓ
    42
    Messaggi
    68
    Versione Office
    Excell 2007
    Likes ricevuti
    0
    Likes dati
    23

    Re: Confronto tra colonne: estrazione valori non doppi.

    Devo riconoscere che....e' piu veloce

    Solo che nel frattempo avevo modificato l'algoritmo di MARIUS e avevo estratto nella colonna D i valori doppi.
    Ora ho "guardato" con il debugger come lavora la tua formula e....qui mi fermo, siamo ad un piano superiore (sto iniziando adesso a studiare VBA....).

    Pero forse implementando entrambe le formule posso dividere le operazioni:
    Rilevazione di valori non doppi: algoritmo di SCOSSA (piu' veloce ed e' l'operazione spesso piu' utilizzata)
    Rilevazione dei valori doppi: algoritmo di MARIUS leggermente modificato (nel caso servano questi codici.)

    Comunque sia, il problema l'ho..ehm ehm ME lo avete risolto. .

    Ringrazio...calorosamente.

    ----------Post unito in automatico----------

    Risultati della "gara contro il tempo":
    dati nella colonna A 4965, B 1999, non doppo 2966.
    Con formula by MARIUS 5,67 secondi
    Con formula by astroGES 0,734 secondi .
    Ok laptop un po' vecchio ma.....

    Ancora un GRAZIE a tutti.

  14. #12
    L'avatar di Cuc¨^_^
    Clicca e Apri
    Data Registrazione
    Jun 2016
    LocalitÓ
    TrentoGallipoliTaranto
    EtÓ
    46
    Messaggi
    310
    Versione Office
    2010
    Likes ricevuti
    57
    Likes dati
    17

    Re: Confronto tra colonne: estrazione valori non doppi.

    Grande scossa

    Per˛ per essere precisi dobbiamo anche prevedere:
    1. pulizia della colonna C
    2. Prevedere se non ci sono valori univoci
    3. Prevedere che l'unico valore unico Ŕ proprio l'ultimo della colonna A
    Bye Cuc¨

    ----------Post unito in automatico----------

    Non potevo non riprovarci...
    Codice: 
    Option Explicit
    
    Sub Confronta_Colonne()
    'By Cuc¨
    Dim Myarr(), Myarr1()
    Dim Rng As Range, Rng1 As Range
    Dim Ur As Long, Icount As Long
    Dim Elephant As Variant
    
    
    Application.ScreenUpdating = False
    Columns(3).ClearContents
    Ur = Range("A" & Rows.Count).End(xlUp).Row
    Set Rng = Range("A1:A" & Ur)
    Myarr() = Rng
    Ur = Range("B" & Rows.Count).End(xlUp).Row
    Set Rng1 = Range("B1:B" & Ur)
    ReDim Myarr1(1 To Ur)
    Icount = 1
    For Each Elephant In Myarr
        If Application.WorksheetFunction.CountIf(Rng1, Elephant) = 0 Then
            ReDim Preserve Myarr1(1 To Icount)
            Myarr1(Icount) = Elephant
            Icount = Icount + 1
        End If
    Next
    If Icount = 1 Then
        MsgBox "Nessun dato trovato"
    Else
        Range("C1:C" & Icount - 1).Value = Application.Transpose(Myarr1)
        Range("C:C").RemoveDuplicates Columns:=1, Header:=xlNo
        MsgBox "Trovati " & Icount - 1 & " valori Univoci"
    End If
    Application.ScreenUpdating = True
    End Sub

  15. #13
    L'avatar di GioPL
    Clicca e Apri
    Data Registrazione
    Dec 2015
    LocalitÓ
    Varsavia
    EtÓ
    42
    Messaggi
    68
    Versione Office
    Excell 2007
    Likes ricevuti
    0
    Likes dati
    23

    Re: Confronto tra colonne: estrazione valori non doppi.

    Hai ragione,
    in genere pero' prima di dare in pasto i dati al confronto, li controllo dal punto di visto doppioni (univocita' nelle singole colonne), lunghezza e pulizia di eventuali spazi prima e dopo il codice. Essendo codici letti dai codici a barre ogni tanto viene letta della "sporcizia".
    Sto infatti pensando se implementare tutti questi controlli o lasciarli indipendenti....
    La pulizia delle colonne C e D (valori non doppiati e doppiati) l'ho gia implementato.....
    Per pigrizia ho anche previsto un tasto di pulizia delle colonne A e B .

    Piano piano sto scoprendo le potenzialita' di VBA...anche se per arrivare al livello GES...dovro' mangiare molta polenta....
    Un saluti a tutti.

  16. #14
    L'avatar di Cuc¨^_^
    Clicca e Apri
    Data Registrazione
    Jun 2016
    LocalitÓ
    TrentoGallipoliTaranto
    EtÓ
    46
    Messaggi
    310
    Versione Office
    2010
    Likes ricevuti
    57
    Likes dati
    17

    Re: Confronto tra colonne: estrazione valori non doppi.

    Citazione Originariamente Scritto da GioPL Visualizza Messaggio
    Hai ragione,
    in genere pero'...
    Scusa ma la mia risposta era indirizzata a Scossa e al codice proposto che nei casi da me segnalati riporta errore...

    Tu invece hai provato il mio?

  17. #15
    L'avatar di GioPL
    Clicca e Apri
    Data Registrazione
    Dec 2015
    LocalitÓ
    Varsavia
    EtÓ
    42
    Messaggi
    68
    Versione Office
    Excell 2007
    Likes ricevuti
    0
    Likes dati
    23

    Re: Confronto tra colonne: estrazione valori non doppi.

    Buono....solo 0,76 secondi.... (4965 in A, 1999 in B, 2966 non doppi).

  18. #16

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    LocalitÓ
    Cosenza
    EtÓ
    45
    Messaggi
    2808
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    979

    Re: Confronto tra colonne: estrazione valori non doppi.

    Citazione Originariamente Scritto da scossa Visualizza Messaggio
    Ciao,

    la soluzione di Mario Ŕ ottima perchÚ esegue un solo ciclo, per˛ .... lo esegue sulla colonna pi¨ popolata .

    PoichÚ GioPl dice

    propongo, giusto per partecipare, un'alternativa (una variazione ad una mia vecchia "gloria"): si tratta di costruire una stringa di tutti i valori in colonna A e di eliminare (con Replace) i caratteri presenti in colonna B; in questo modo si ciclano i soli valori di colonna B.

    I tempi, su 5.000 righe passano da una media di 0,328 secondi della sub di Mario a 0,039 della mia ....

    Codice: 
    Sub FiltraAdaB()
      'by scossa
      Dim rngA As Range
      Dim rngB As Range
      Dim arA As Variant
      Dim arB As Variant
      Dim sA As String
      Dim vEle As Variant
      Dim nStart As Single
      Dim nStop As Single
      
      nStart = Timer
      Set rngA = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
      Set rngB = Range(Cells(1, 2), Cells(Rows.Count, 2).End(xlUp))
      arB = Application.Transpose(rngB.Value)
      sA = "#" & Join(Application.Transpose(rngA.Value), "#") & "#"
      
      For Each vEle In arB
        sA = Replace(sA, "#" & vEle & "#", "#")
      Next
      
      sA = Mid(sA, 2, Len(sA) - 2)
      arA = Split(sA, "#")
      Set rngA = Range(Cells(1, 3), Cells(UBound(arA), 3))
      rngA.Value = Application.Transpose(arA)
      Set rngA = Nothing
      Set rngB = Nothing
      nStop = Timer
      Debug.Print nStop - nStart
      MsgBox "terminato in " & nStop - nStart
    
    End Sub
    C'Ŕ sempre da imparare da Scossa.
    Mi chiedevo che utilitÓ c'Ŕ di convertire anche rngB in matrice per poi avviare il ciclo For... Each anzichÚ avviare il ciclo direttamente al range rngB?

  19. #17

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    LocalitÓ
    Verona Provincia
    EtÓ
    57
    Messaggi
    1017
    Versione Office
    .
    Likes ricevuti
    366
    Likes dati
    0

    Re: Confronto tra colonne: estrazione valori non doppi.

    Ciao,
    Citazione Originariamente Scritto da Cuc¨^_^ Visualizza Messaggio
    1. pulizia della colonna C
    2. Prevedere se non ci sono valori univoci
    3. Prevedere che l'unico valore unico Ŕ proprio l'ultimo della colonna A
    Il punto 1 Ŕ banale da risolvere:
    Codice: 
      rngA.Offset(0, 2).ClearContents
    il punto 2 (3) Ŕ opinabile, nel senso che non Ŕ specificato che si vogliano eliminare anche i valori duplicati della colonna A; ma anch'esso si risolve banalmente:
    Codice: 
      rngA.RemoveDuplicates Columns:=1, Header:=xlNo '< -- aggiunta
    Riassumendo:
    Codice: 
    Sub FiltraAdaB()
      'by scossa
      Dim rngA As Range
      Dim rngB As Range
      Dim arA As Variant
      Dim arB As Variant
      Dim sA As String
      Dim vEle As Variant
    
      Set rngA = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
      Set rngB = Range(Cells(1, 2), Cells(Rows.Count, 2).End(xlUp))
      arB = Application.Transpose(rngB.Value)
      sA = "#" & Join(Application.Transpose(rngA.Value), "#") & "#"
      
      rngA.Offset(0, 2).ClearContents '< -- aggiunta
      
      For Each vEle In arB
        sA = Replace(sA, "#" & vEle & "#", "#")
      Next
      
      sA = Mid(sA, 2, Len(sA) - 2)
      arA = Split(sA, "#")
      Set rngA = Range(Cells(1, 3), Cells(UBound(arA), 3))
      rngA.Value = Application.Transpose(arA)
      
      rngA.RemoveDuplicates Columns:=1, Header:=xlNo '< -- aggiunta
      
      Set rngA = Nothing
      Set rngB = Nothing
      
    End Sub
    siamo sempre nell'ordine dei decimi di secondo.

    P.S.: non ho capito quale sarebbe la condizione che genera errore.

    ----------Post unito in automatico----------

    Citazione Originariamente Scritto da Rubik72 Visualizza Messaggio
    Mi chiedevo che utilitÓ c'Ŕ di convertire anche rngB in matrice per poi avviare il ciclo For... Each anzichÚ avviare il ciclo direttamente al range rngB?
    VelocitÓ... leggere gli elementi di un array Ŕ motlo pi¨ veloce che leggere le celle di un range.
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  20. #18
    L'avatar di Cuc¨^_^
    Clicca e Apri
    Data Registrazione
    Jun 2016
    LocalitÓ
    TrentoGallipoliTaranto
    EtÓ
    46
    Messaggi
    310
    Versione Office
    2010
    Likes ricevuti
    57
    Likes dati
    17

    Re: Confronto tra colonne: estrazione valori non doppi.

    @Scossa

    Prova a mettere un valore univoco come ultimo valore nella colonna A, con il tuo sistema viene ignorato.
    oppure se il valore univo Ŕ soltanto 1 oppure ancora nessuno.

  21. #19

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    LocalitÓ
    Verona Provincia
    EtÓ
    57
    Messaggi
    1017
    Versione Office
    .
    Likes ricevuti
    366
    Likes dati
    0

    Re: Confronto tra colonne: estrazione valori non doppi.

    Hai ragione, ma Ŕ solo una mia svista (da pivello) : l'array arA ha indice 0 quindi bisogna aggiungere 1:

    Codice: 
    Set rngA = Range(Cells(1, 3), Cells(UBound(arA) + 1, 3))
    ----------Post unito in automatico----------

    a voler essere pignoli:

    Codice: 
      With rngA.Parent
        Set rngA = .Range(.Cells(1, 3), .Cells(UBound(arA) + 1, 3))
      End With
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  22. #20
    L'avatar di Cuc¨^_^
    Clicca e Apri
    Data Registrazione
    Jun 2016
    LocalitÓ
    TrentoGallipoliTaranto
    EtÓ
    46
    Messaggi
    310
    Versione Office
    2010
    Likes ricevuti
    57
    Likes dati
    17

    Re: Confronto tra colonne: estrazione valori non doppi.


  23. #21
    L'avatar di GioPL
    Clicca e Apri
    Data Registrazione
    Dec 2015
    LocalitÓ
    Varsavia
    EtÓ
    42
    Messaggi
    68
    Versione Office
    Excell 2007
    Likes ricevuti
    0
    Likes dati
    23

    Re: Confronto tra colonne: estrazione valori non doppi.

    per CUCU':

    Con una piccola modifica al tuo algoritmo mi sono creato una seconda macro che mi estrai i doppioni nella colonna D. E cosi concludo.
    Non ho ancora chiaro il significato delle funzioni ma con un po' di logica e reminescenze di programmazione...
    Quindi .
    Ultima modifica fatta da:GioPL; 14/07/16 alle 16:03 Motivo: aggiunta

  24. #22
    L'avatar di Cuc¨^_^
    Clicca e Apri
    Data Registrazione
    Jun 2016
    LocalitÓ
    TrentoGallipoliTaranto
    EtÓ
    46
    Messaggi
    310
    Versione Office
    2010
    Likes ricevuti
    57
    Likes dati
    17

    Re: Confronto tra colonne: estrazione valori non doppi.

    Bene ottimo

  25. #23
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    LocalitÓ
    Catania
    EtÓ
    73
    Messaggi
    3209
    Versione Office
    Excel2010
    Likes ricevuti
    625
    Likes dati
    155

    Re: Confronto tra colonne: estrazione valori non doppi.

    Salve ragazzi
    sapete che, specie in Estate, mi diverto con un po' di pesca ... sono stato fuori e solo adesso leggo le risposte di scossa, di ges, di cuc¨, di rubik.
    Ma non vi si pu˛ lasciare un attimo soli!!!!!

    Come sempre (Ŕ sempre meglio ribadirlo, anche se superfluo) il premio spetta a scossa .
    Ma anche gli altri ( me compreso ) si sono difesi egregiamente.

    Buon pomeriggio a tutti,
    Mario

  26. #24

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    LocalitÓ
    Cosenza
    EtÓ
    45
    Messaggi
    2808
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    979

    Re: Confronto tra colonne: estrazione valori non doppi.

    Dopo varie prove ho constatato una cosa.
    Se i nominativi in colonna A non sono univoci (se c'Ŕ qualche duplicato) la routine di @Scossa soffre di un piccolo bug, in particolare il Replace di due nominativi vicini, il secondo non viene riconosciuto:
    es:
    Replace("#Pippo#Pippo#Pluto#Minni#, "#Pippo#", "#")
    riconosce il primo "#Pippo#", ma il secondo no in quanto hanno il "#" (cancelletto) in comune.

    Per ovviare a questo ho fatto una piccola modifica con il permesso di @Scossa alla sua routine

    Codice: 
      For Each vEle In arB
        Do Until InStr(1, sA, "#" & vEle & "#") = 0
            sA = Replace(sA, "#" & vEle & "#", "#")
        Loop
      Next
    Mentre i dati duplicati in colonna B tutto OK

    P.S. le routine di @Marius44 e @ges non soffrono dello stesso problema.

  27. #25

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    LocalitÓ
    Verona Provincia
    EtÓ
    57
    Messaggi
    1017
    Versione Office
    .
    Likes ricevuti
    366
    Likes dati
    0

    Re: Confronto tra colonne: estrazione valori non doppi.

    Citazione Originariamente Scritto da Rubik72 Visualizza Messaggio
    Se i nominativi in colonna A non sono univoci (se c'Ŕ qualche duplicato) la routine di @Scossa soffre di un piccolo bug, in particolare il
    Grazie per la segnalazione Rubik.

    Direi che si risolve senza bisogno di aggiungere un ciclo (in blu le semplici modifiche):

    Codice: 
    Sub FiltraAdaB()
      'by scossa
      Dim rngA As Range
      Dim rngB As Range
      Dim arA As Variant
      Dim arB As Variant
      Dim sA As String
      Dim vEle As Variant
    
    
      Set rngA = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
      Set rngB = Range(Cells(1, 2), Cells(Rows.Count, 2).End(xlUp))
      arB = Application.Transpose(rngB.Value)
      sA = "##" & Join(Application.Transpose(rngA.Value), "##") & "##"
      rngA.Offset(0, 2).ClearContents '< -- aggiunta
      
      For Each vEle In arB
        sA = Replace(sA, "#" & vEle & "#", "")
      Next  
      sA = Mid(sA, 3, Len(sA) - 4)
      arA = Split(sA, "##")
      With rngA.Parent
      Set rngA = .Range(.Cells(1, 3), .Cells(UBound(arA) + 1, 3))
      End With
      rngA.Value = Application.Transpose(arA)
      
      rngA.RemoveDuplicates Columns:=1, Header:=xlNo '< -- aggiunta
      
      Set rngA = Nothing
      Set rngB = Nothing
      
    End Sub
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  28. #26
    L'avatar di Cuc¨^_^
    Clicca e Apri
    Data Registrazione
    Jun 2016
    LocalitÓ
    TrentoGallipoliTaranto
    EtÓ
    46
    Messaggi
    310
    Versione Office
    2010
    Likes ricevuti
    57
    Likes dati
    17

    Re: Confronto tra colonne: estrazione valori non doppi.

    Citazione Originariamente Scritto da Rubik72 Visualizza Messaggio

    P.S. le routine di @Marius44 e @ges non soffrono dello stesso problema.
    Quella di Cuc¨ invece.... Manco considerata...

    ----------Post unito in automatico----------

    Citazione Originariamente Scritto da Marius44 Visualizza Messaggio
    Salve ragazzi
    sapete che, specie in Estate, mi diverto con un po' di pesca ...
    Carniere???

    ----------Post unito in automatico----------

    Citazione Originariamente Scritto da Marius44 Visualizza Messaggio
    Come sempre (Ŕ sempre meglio ribadirlo, anche se superfluo) il premio spetta a scossa .
    Mario
    Bhe stavolta, visti gli errori commessi direi.... anche no...
    Ma solo questa volta...

  29. #27

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    LocalitÓ
    Verona Provincia
    EtÓ
    57
    Messaggi
    1017
    Versione Office
    .
    Likes ricevuti
    366
    Likes dati
    0

    Re: Confronto tra colonne: estrazione valori non doppi.

    Citazione Originariamente Scritto da Cuc¨^_^ Visualizza Messaggio
    Bhe stavolta, visti gli errori commessi direi.... anche no...
    Hai ragione, ma non per gli errori bensý per l'errore, (l'indice dell'array ) visto che la base di tutto era il file di esempio di GioPl con la sua casistica limitata ...., e la mia soluzione per l'anomalia segnalata da Rubik non ha cambiato la logica del codice.

    Ma se vuoi ti lascio scegliere quale parte della coppa tenerti: manici o calice?
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  30. #28
    L'avatar di Cuc¨^_^
    Clicca e Apri
    Data Registrazione
    Jun 2016
    LocalitÓ
    TrentoGallipoliTaranto
    EtÓ
    46
    Messaggi
    310
    Versione Office
    2010
    Likes ricevuti
    57
    Likes dati
    17

    Re: Confronto tra colonne: estrazione valori non doppi.

    Citazione Originariamente Scritto da scossa Visualizza Messaggio
    Ma se vuoi ti lascio scegliere quale parte della coppa tenerti: manici o calice?
    Ti lascio volentieri la coppa e prendo il contenuto, soprattutto se si tratta di un buon prosecco ghiacciato...

  31. #29

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    LocalitÓ
    Verona Provincia
    EtÓ
    57
    Messaggi
    1017
    Versione Office
    .
    Likes ricevuti
    366
    Likes dati
    0

    Re: Confronto tra colonne: estrazione valori non doppi.

    Citazione Originariamente Scritto da Cuc¨^_^ Visualizza Messaggio
    Ti lascio volentieri la coppa e prendo il contenuto, soprattutto se si tratta di un buon prosecco ghiacciato...
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  32. #30

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    LocalitÓ
    Cosenza
    EtÓ
    45
    Messaggi
    2808
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    979

    Re: Confronto tra colonne: estrazione valori non doppi.

    Citazione Originariamente Scritto da Cuc¨^_^ Visualizza Messaggio
    Quella di Cuc¨ invece.... Manco considerata...
    Ops. Ottima anche la tua soluzione esente da bug.

Discussioni Simili

  1. [Risolto] Confronto di 3 colonne su due fogli
    Di FELIX nel forum Domande su Excel in generale
    Risposte: 4
    Ultimo Messaggio: 20/10/16, 19:54
  2. Confronto fra due colonne
    Di Merck1983 nel forum Domande su Excel in generale
    Risposte: 3
    Ultimo Messaggio: 04/10/16, 13:34
  3. Confronto tra 2 colonne
    Di _adi_ nel forum Domande su Excel in generale
    Risposte: 13
    Ultimo Messaggio: 21/09/16, 12:55
  4. Evidenziare i valori doppi
    Di moisess nel forum Domande su Excel VBA e MACRO
    Risposte: 6
    Ultimo Messaggio: 10/07/16, 17:53
  5. ricerca valori doppi e calcolo distanza
    Di gagost nel forum Domande su Excel in generale
    Risposte: 12
    Ultimo Messaggio: 04/12/15, 22:53

Tag per Questa Discussione

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •