Valorizza dato se presente su due colonne

di il
10 risposte

Valorizza dato se presente su due colonne

Ciao a tutti,
mi trovo a dover risolvere questa situazione.
Ho una lista di nomi disposti in una colonna (sono circa ventimila), poi ho una seconda colonna con altri nomi (questa volta sono di meno, sono circa duemila) dovrei fare in modo che un nome venisse valorizzato con un colore oppure che nella cella di fianco apparisse un valore (Si/No, per esempio) se questo nome fosse presente in entrambe le colonne. Es.: cella A1 nome ROSSI Paolo risulta essere presente nell'intervallo B1:B1000 allora cella C1 scrivi "SI" altrimenti scrivi "NO".
Secondo voi è fattibile ?
Grazie

10 Risposte

  • Re: Valorizza dato se presente su due colonne

    Ciao
    Visto che non so a quali colonne ti riferisci ho fatto una prova con 20 nomi in colonna A e 3 nomi in colonna B.
    La macro, da inserire in un Modulo standard e associare ad un pulsante NON ActiveX, che ti sottopongo colora, con lo stesso colore, le celle in cui trova nomi uguali nelle due colonne.
    
    Option Explicit
    
    Sub ColoraDuplicati()
    Dim Rng As Range, colore As Integer
    Dim Cell As Range, Cell2 As Range
    Dim uRigaA As Long, uRigaB As Long
    Dim NCella As Integer, testo As String
    
        Range("A1:B20").Interior.ColorIndex = xlNone
        colore = 3
        uRigaA = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
        uRigaB = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
        For Each Cell In Range("B1:B" & uRigaB)
            NCella = Cells(Cell.Row, 3).Interior.ColorIndex
            If NCella <> xlNone Then GoTo 1
            testo = Cell.Value
            For Each Cell2 In Range(Cells(1, 1), Cells(uRigaA, 1))
            If Cell2.Value = testo Then
                Cells(Cell.Row, 2).Interior.ColorIndex = colore
                Cells(Cell2.Row, 1).Interior.ColorIndex = Cells(Cell.Row, 2).Interior.ColorIndex
            End If
        Next
        colore = colore + 1
    1   Next
    End Sub
    


    Fai sapere. Ciao,
    Mario
  • Re: Valorizza dato se presente su due colonne

    Ciao Marius44,
    grazie della risposta. I valori li ho nelle colonne L e M, L1 e M1 sono le intestazioni. Nel range L2:L20000 ho i nominativi presenti in elenco e nelle celle M2:M2000 i nominativi che hanno quel determinato requisito. Intanto le due colonne provengono da due applicativi diversi (che non parlano tra loro, ecco perché devo fare questo lavoro), il meccanismo serve per capire come fare a discriminare quei nomi che sono presenti in entrambe le colonne. Ho pensato che (forse) portandole in access farei prima e meglio ma non mi è granchè chiaro come riuscire a identificarli anche lì.
    Ciao

    mazda91
  • Re: Valorizza dato se presente su due colonne

    Ciao
    Nella macro che ti ho inviato basta sostituire il riferimento a col.A con col.L, col.B con col.M e col.C con la colonna che vuoi, forse N (oppure, che è lo stesso, il riferimento alla col.1 con 12, col.2 con 13 e col.3 con 14).

    Di più non saprei cosa fare. Oppure posta il tuo file e vedremo.
    Ciao,
    Mario
  • Re: Valorizza dato se presente su due colonne

    Mi scuso per il ritardo nella risposta ma il lavoro mi ha preso più del solito negli ultimi 10 giorni. AL momento non ho ancora risolto nomostante l'aiuto del forum e di Marius44 in particolare.
  • Re: Valorizza dato se presente su due colonne

    Ciao
    prova ad allegare il tuo file "molto ridotto" (bastano un centinaio di righe per colonna), indica dove e come vuoi i risultati oppure se ti è sufficiente che i valori uguali vengano evidenziati con lo stesso colore (diverso per ogni valore individuato).

    Ciao,
    Mario
  • Re: Valorizza dato se presente su due colonne

    Grazie del tuo tempo Marius44, ecco il file in versione ridotta
    Allegati:
    8433_a593c3e813b553b283b71b143fc28221.xlsx
    8433_a593c3e813b553b283b71b143fc28221.xlsx
  • Re: Valorizza dato se presente su due colonne

    Ciao
    La macro che t'ho suggerita diventa così.
    
    Option Explicit
    
    Sub ColoraDuplicati()
    Dim Rng As Range, colore As Integer
    Dim Cell As Range, Cell2 As Range
    Dim uRigaA As Long, uRigaD As Long
    Dim NCella As Integer, testo As String
    
        Range("A3:D100").Interior.ColorIndex = xlNone
        colore = 3
        uRigaA = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
        uRigaD = ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row
        For Each Cell In Range("D3:D" & uRigaD)
            NCella = Cells(Cell.Row, 3).Interior.ColorIndex
            If NCella <> xlNone Then GoTo 1
            testo = Cell.Value
            For Each Cell2 In Range(Cells(3, 1), Cells(uRigaA, 1))
            If Cell2.Value = testo Then
                Cells(Cell.Row, 4).Interior.ColorIndex = colore
                Cells(Cell2.Row, 1).Interior.ColorIndex = Cells(Cell.Row, 4).Interior.ColorIndex
            End If
        Next
        colore = colore + 1
    1   Next
    End Sub
    
    Prova e fai sapere. Ciao,
    Mario
  • Re: Valorizza dato se presente su due colonne

    Ciao Marius, dopo un po' di assenza rieccomi.
    La procedura funziona sul file usato con i dati di esempio. Quando l'ho implementato nel file dove devo lavorare (facendo tutto pari pari) mi da l'errore:

    ERRORE DI RUNTIME 9
    INDICE NON ILCLUSI NELL'INTERVALLO

    al debug mi evidenzia il rigo

    cells(cell.rov, 4) ecc. ecc.

    Non so cosa possa essere successo ? Di fatto ho creato la macro allo stesso modo in entrambi i file.
    Ad ogni modo grazie
    Mazda 91
  • Re: Valorizza dato se presente su due colonne

    Ciao
    la macro funziona SE i dati sono come da esempio da te allegato, cioè tabella 1 nelle colonne A e B, tabella 2 nelle colonne D ed E.
    La riga di codice Cells(Cell.Row, 4).Interior.ColorIndex = colore si riferisce alla colonna D (n.4)

    Non saprei cosa dirti. Potresti depurare dai dati sensibili il tuo file e allegarlo per vedere se la struttura è diversa.
    Ciao,
    Mario
  • Re: Valorizza dato se presente su due colonne

    Aggiornamento: risolto con l'utilizzo della funzione 'formattazione condizionale' > 'Regole evidenziazione celle' > 'Valori duplicati'. Forse era questa la strada più semplice da seguire. Grazie particolarmente a Marius.
Devi accedere o registrarti per scrivere nel forum
10 risposte