Elenco filtrato



  • Elenco filtrato
    di alexps81 data: 02/12/2016 08:12:27

    Buongiorno a tutti, vorrei chiedere se qualcuno mi sa dire come si può ottenere un elenco proveniente dal risultato due elenchi. Vi espongo il mio problema:

    In allegato c'è un file dove al suo interno sono presenti 3 foglio (ELENCO_1, ELENCO_2, ELENCO_3).
    Nel foglio ELENCO_3 vorrei ottenere il risultato proveniente dagli altri due fogli. Il problema è che negli altri fogli sono presenti due elenchi, molto simili tra di loro, ma non uguali.
    Infatti nel foglio ELENCO_1 troverete nella:

    COLONNA A COLONNA B

    PAPERONE 70546
    StrFer
    StrNoF
    StrNF

    MINNIE 35508
    StrFer
    StrNoF
    StrNF

    PLUTO 26108
    StrFer
    StrNoF
    StrNF

    Nel foglio ELENCO_2 sarà pressoché simile ma ci potrebbero essere o nomi nuovi (seguiti da un codice nuovo, quello indicato in colonna B) o nomi praticamente uguali ma in righe diverse. Ad esempio il foglio ELENCO_2 potrebbe essere:

    COLONNA A COLONNA B

    PIPPO 65538
    StrFer
    StrNoF
    StrNF

    PLUTO 26108
    StrFer
    StrNoF
    StrNF

    TOPOLINO 88788
    StrFer
    StrNoF
    StrNF

    e così via per molte righe più in basso.

    In sostanza vorrei ottenere in un terzo foglio il risultato del confronto dei due fogli ma i duplicati non li deve considerare, tenendo conto però che potrebbe esistere un omonimo ma con un codice a fianco diverso. Esempio

    TOPOLINO 88788 e TOPOLINO 88788

    sono uguali, perché oltre al nome c'è anche il codice che identifica quel nome (88788), quindi dovrà essere presente solo uno dei due

    mentre:

    TOPOLINO 88788 e TOPOLINO 13563

    chiaramente sono diversi, dunque nell'elenco tre questi nominativi dovranno entrambi essere presenti.

    Un grande risultato l'ho ottenuto con il pulsante RIMUOVI DUPLICATI, però poi mi elimina anche le scritte
    StrFer
    StrNoF
    StrNF

    poste al di sotto di ogni nominativo, perché chiaramente sono Excel le identifica come uguali e questo non va bene.

    Grazie per l'interessamento.



  • di patel data: 02/12/2016 08:28:24

    nel tuo file allegato manca proprio la cosa più importante, il risultato desiderato





  • di alexps81 data: 02/12/2016 08:40:46

    Ciao Patel, pensavo si capisse. Cmq ho allegato un nuovo file di esempio con il risultato cercato. In pratica si nota che nel foglio ELENCO FILTRATO sono presenti oltre ai nominativi presenti o solo nel foglio ELENCO_1 o solo nel foglio ELENCO_2 ma anche i nominativi confrontati dei due fogli. Infatti Topolino 88788, evidenziato in rosso, è presente in entrambi fogli, dunque nel foglio ELENCO FILTRATO sarà presente solo una volta, così come Gastone 49373. Mentre il nominativo Gastone 55063, evidenziato in giallo, è presente solo una volta nonostante il nome GASTONE sia presente 3 volte nei due elenchi ma 2 su 3 sono uguali (Gastone 49373 - ELENCO_1 e Gastone 49373 - ELENCO_2).



  • di patel data: 02/12/2016 09:03:55

    nel foglio risultato non vedo pippo, perché ?





  • di alexps81 data: 02/12/2016 09:05:51

    Si hai ragione, stavo facendo delle prove e mi è sfuggito. Cmq considera che è presente anche nel foglio ELENCO FILTRATO



  • di patel data: 02/12/2016 10:11:17

    prova questa 
     
    Sub a()
    dr = 2
    Set Rng = Sheets(1).Range("A3:B5")
    For sh = 1 To 2
      With Sheets(sh)
        LR = .Cells(.Rows.Count, "A").End(xlUp).Row
        For r = 2 To LR Step 4
          Sheets(3).Cells(dr, "A") = .Cells(r, "A")
          Sheets(3).Cells(dr, "B") = .Cells(r, "B")
          dr = dr + 1
        Next
        End With
    Next
    With Sheets(3)
      .Range("A2:B" & dr - 1).RemoveDuplicates Columns:=Array(1, 2), Header:=xlNo
      LR = .Cells(.Rows.Count, "A").End(xlUp).Row
      For r = LR To 2 Step -1
          Rows(r + 1 & ":" & r + 3).Insert
          Rng.Copy .Cells(r + 1, "A")
      Next
      
    End With
    End Sub
    






  • di alexps81 data: 02/12/2016 10:47:13

    Ho provato a inserire la sub in un modulo e ho associato il codice all'evento click di un button. Quando lancio la sub si blocca su STOP.
    Volevo aggiungere che cmq le scritte StrFer, StrNoF e StrNF devono cmq rimanere sotto ogni nominativo



  • di patel data: 02/12/2016 11:07:12

    elimina lo stop, ho corretto il codice sopra riportato





  • di alexps81 data: 02/12/2016 11:30:44

    Perfetto ottimo funziona. Diciamo che fino allo STOP sono riuscito a decifrare il tuo codice, ma oltre faccio fatica.

    P.S. come mai non mantiene la stessa formattazione? Cioè ad esempio PIPPO è scritto in grassetto con allineamento a sinistra, mentre nel foglio 3 risulta tutto allineato a destra e normale.



  • di patel data: 02/12/2016 11:41:19

    prova questa

     
    Sub a()
    dr = 2
    Set Rng = Sheets(1).Range("A3:B5") ' range da copiare
    For sh = 1 To 2
      With Sheets(sh)
        LR = .Cells(.Rows.Count, "A").End(xlUp).Row
        For r = 2 To LR Step 4
          .Range("A" & r & ":B" & r).Copy Sheets(3).Cells(dr, "A")
          dr = dr + 1
        Next
        End With
    Next
    With Sheets(3)
      .Range("A2:B" & dr - 1).RemoveDuplicates Columns:=Array(1, 2), Header:=xlNo
      LR = .Cells(.Rows.Count, "A").End(xlUp).Row
      For r = LR To 2 Step -1
          Rows(r + 1 & ":" & r + 3).Insert ' inserisce 3 righe
          Rng.Copy .Cells(r + 1, "A") 'copia str....
      Next
      
    End With
    End Sub






  • di alexps81 data: 02/12/2016 12:00:53

    Grazie mille, funziona alla perfezione. Spero un giorno di essere bravo come voi esperti. Così non vi rompo più



  • di patel data: 02/12/2016 12:40:02

    vuoi imparare ? nel mio codice c'è una parte inutile, il ciclo for che copia nel terzo foglio tutti i nomi, basterebbe copiare i contenuti dei primi due fogli nel terzo, fare l'eliminazione dei duplicati e inserire le righe copiandoci rng