Confronto tra due tabelle



  • Confronto tra due tabelle
    di tonyblue (utente non iscritto) data: 18/02/2014 14:37:10

    Gentilissimi,

    vi chiedo un cortese aiuto per risolvere un problema che per voi presumo
    sarà di una enorme semplicità.

    Ho 2 fogli di lavoro diversi in Excel. Essi sono due file diversi.
    Nel primo file, vi è un elenco di persone predisposte per Nome e Cognome.
    Nel secondo file, vi è un altro elenco predisposto per Nome e per Cognome, con accanto una serie di dati,
    digitati in varie celle.

    Gradirei, poter confrontare i due file, in modo tale che nel mio primo file, per ogni nome e cognome INDIVIDUATO nel
    secondo file, mi restituisca il valore corrispondete alla cella "n" del secondo file.

    Grazie di cuore.



  • di giabon data: 18/02/2014 14:51:12

    Ciao,
    io userei la funzione cerca.vert, avendo l'accortezza di inserire alla sinistra della tabella con i nomi e i dati una colonna di appoggio con la formula =B1&C1 che sarà la colonna a cui farà riferimento la formula del cerca.vert
    nel foglio con solo i nomi (colonna A) e cognomi (colonna B) nella colonna in cui vuoi avere i dati inserisci la funzione (ad esempio in C2):
    =CERCA.VERT(A2&B2;[Cartel2]Foglio1!$1:$65536;15;FALSO)
    dove puoi sostituire cartel2 con il nome del file e Foglio1 con il nome del foglio dove si trovano i nomi cognomi e dati
    il 15 va a prendere la colonna N
    il falso significa che ricerca una corrispondenza esatta
    spero di esser stato di qualche aiuto
    ciao



  • di tonyblue data: 19/02/2014 08:03:26

    Temo di non avere capito, chiedo scusa.

    I due file si chiamano rispettivamente :

    1. Elenco_bozza.xls
    2. Elenco_completo.xls

    Il file Elenco_bozze.xls, contiene solamente due colonne separate con nome e cognome
    Il file elenco_completo.xls, contiene invece 20 colonne, dove le prime due sono nome e cognome e le altre 18 sono dati.
    Vorrei che il file Elenco_bozze.xls entrasse nell'altro per trovare la corrispondenza del nome e cognome per poi leggere un solo dato che trovasi in una specifica colonna.

    Grazie ancora e scusate.



  • di nichicanta (utente non iscritto) data: 19/02/2014 08:32:30

    Ciao tony, adatta questo codice dell'amico Raffele_53 trovato nello storico delle discussioni, penso che manchino pochi passaggi per adattarlo alle tue esigenze, magari con l'aiuto degli esperti.
    Un buongiorno a tutti gli amici del forum.
     
    Option Explicit
    Sub cerca_trova2()
    
    'dichiaro le variabili
        Dim wk1 As Workbook, wk2 As Workbook
        Dim sh1 As Worksheet, sh2 As Worksheet
        Dim Area1 As Range, Area2 As Range, cella As Range
        Dim nonesiste, valore
    
    'metto i riferimenti ai files
        Set wk1 = Workbooks("FileExchangeCatalogTemplate.xls") 'non hai messo .xls
        Set wk2 = Workbooks("Ricerca.xls")
        'metto i riferimenti ai fogli
        Set sh1 = wk1.Worksheets("Foglio1")
        Set sh2 = wk2.Worksheets("Ricerca")
        'metto i riferimenti alle Aree
        Set Area1 = sh1.[D2:D49]
        Set Area2 = sh2.[C3:C50]
        
        For Each cella In Area2
    
            valore = cella
            Set nonesiste = Area1.Find(valore, LookIn:=xlValues, LookAt:=xlWhole) ' Set wk1 = [D:D].Find... casomai era sh1
            If nonesiste Is Nothing Then
                cella.Interior.ColorIndex = 3   'rosso nonesiste
            Else
                cella.Interior.ColorIndex = 36   'giallo chiaro esiste
            
                End If
        Next
      
        'Set a Nothing delle variabili oggetto
        Set sh2 = Nothing
        Set sh1 = Nothing
        Set wk1 = Nothing
        Set wk2 = Nothing
    End Sub



  • di tonyblue data: 19/02/2014 10:52:33


    Allora, sto uscendo pazza con l'uso di CERCA e CERCA.VERT, ma non riesco a trovare una soluzione.

    Partendo da un elenco di persone salvate in un file, devo entrare in un altro file MASTER, per trovare
    la corrispondenza con il nome e cognome di quella persona, e accanto al suo nominativo
    devo copiare un valore contenuto in una cella del file MASTER.

    I due file si chiamano rispettivamente :

    1. Elenco_bozza.xls
    2. Elenco_completo.xls

    Il file Elenco_bozze.xls, contiene solamente due colonne separate con nome e cognome
    Il file elenco_completo.xls, contiene invece 20 colonne, dove le prime due sono nome e cognome e le altre 18 sono dati.
    Vorrei che il file Elenco_bozze.xls entrasse nell'altro (Elenco_completo.xls) per trovare la UGUALE corrispondenza del nome e cognome per poi leggere un solo dato che trovasi in una specifica colonna.

    Esempio

    Nel file Elenco_completo.xls, c'è scritto :

    MARIO ROSSI 13 15 16
    ANTONIO BIANCHI 18 21 54
    TIZIO VERDI 21 23 14
    PAOLA GIALLA 41 11 10
    ROSA ROSSA 11 21 10


    Il File Elenco_bozza.xls, avrà in esso un elenco di nomi e cognomi DIVERSO dal precedente,
    dove solo ALCUNI di essi sono gli stessi e dal quale dovrà estrapolare un dato :

    MARIO BIANCHI
    GIANNA FREDDA
    TIZIO VERDI 14 <---Ha trovato lo stesso nome e cognome nel primo file e ne legge la cella specificata (14)
    TIZIANA NERI
    MANU FRANCHI

    Grazie ancora e scusate.



  • di giabon data: 19/02/2014 14:11:29

    Provo a rispiegare in modo più dettagliato, spero di riuscirci
    Non ci dici i nomi dei fogli e quale deve essere la colonna da cui prendere i dati, faccio io due ipotesi:
    - ipotizzo che i due fogli si chiamino "solonomi" nel caso del file Elenco_Bozza.xls e "nomiedati" nel file Elenco_Completo.xls
    - ipotizzo inoltre che la specifica colonna sia la colonna 10 (nome di colonna "J") del foglio "nomiedati" del file Elenco_Completo.xls

    nel foglio nomiedati del file Elenco_Completo.xls bisogna creare una colonna di appoggio all'inizio della tabella (diventerà la colonna A e di conseguenza tutte le altre colonne si sposteranno di una lettera verso destra, compresa la colonna J che diventerà la colonna K in 11esima posizione). Il modo più comodo per creare la colonna è cliccare con il tasto dx sulla lettera A dell'intestazione di colonna e scegliere "inserisci". Una volta inserita questa colonna nuova, in A1 scriviamo la seguente formula:
    =B1&C1
    e poi trasciniamo verso il basso fino alla fine della tabella.
    Otterremo una colonna che presenta tutti valori di testo che sono l'unione delle due colonne successive (per intenderci avremo in A1 la scritta NomeCognome poi sotto in A2 MarioRossi poi in A3 AntonioBianchi poi TizioVerdi....)

    nel foglio "solonomi" del file Elenco_Bozza.xls andiamo ad inserire nella cella C2 la seguente formula:
    =CERCA.VERT(A2&B2;[Elenco_Bozza.xls]solonomi!$1:$65536;11;FALSO)
    dove 11 sta per 11esima colonna (K) su cui ho ipotizzato i dati cercati

    nel caso in cui la funzione non trova corrispondenza tra nome e cognome verrà fuori un errore, altrimenti verrà il dato cercato.
    A presto
    Giab



  • di nichicanta (utente non iscritto) data: 19/02/2014 14:32:14

    Prova ad allegare un file, a volte ( questo accade a me) è più facile aiutare gli altri testando il file allegato che non leggendo ed interpretando il testo postato.
    Inserisci dei commenti, per rendere più comprensibile la tua richiesta di aiuto e vedrai che qualcuno disponibile ti aiuterà, non avere dubbi su questo.
    Ciao.



  • di tonyblue data: 19/02/2014 15:22:02

    Allora ho risolto, grazie all'ausilio dei vostri inestimabili suggerimenti.

    Impiegando il CONCATENA, mi sono ritrovato purtroppo COGNOMI e NOMI con dello "spazio" alla fine di essi.
    Ho risolto inserendo ANNULLA.SPAZI().

    Funziona tutto perfettamente.

    Grazie a tutti voi.



  • di giabon data: 19/02/2014 15:59:19

    Bene, sono contento nonostante mi sia accorto ora che nella formula ho scritto
    =CERCA.VERT(A2&B2;[Elenco_Bozza.xls]solonomi!$1:$65536;11;FALSO)
    invece di
    =CERCA.VERT(A2&B2;[Elenco_Completo.xls]nomiedati!$1:$65536;11;FALSO)

    Al posto del concatena spesso uso la & perchè è più veloce da scrivere se ci sono pochi elementi.

    Visto che hai risolto il tutto ti indico, semmai servisse, come far comparire il dato al variare dell'intestazione della colonna C del foglio "solonomi". Questo è utile se per quel nome e cognome vuoi avere come informazione un'altra colonna o più altre colonne ed è indispensabile per non avere falsi dati se nella tabella nomiedati del file Elenco_Completo.xls aggiungi o sposti colonne...

    nella formula in C2 del foglio solonomi sostituisci il numero 11 con

    CONFRONTA(C$1;[Elenco_Completo.xls]nomiedati!$1:$1;0)

    di modo che la formula diventa

    =CERCA.VERT(A2&B2;[Elenco_Completo.xls]nomiedati!$1:$65536;CONFRONTA(C$1;[Elenco_Bozza.xls]solonomi!$1:$1;0);FALSO)

    e poi trascina in basso la formula.

    Se in C1 scrivi esattamente l'intestazione della colonna che vuoi cercare che trovi nel file con tutti i dati avrai il risultato atteso.
    Se vuoi avere la stessa formula su altre colonne a destra prima di trascinare verso destra devi bloccare il riferimento alle celle a2 e b2 modificando A2&B2 in $A2&$B2. Riporto sotto questa versione ultima per il trascinamento anche a destra.

    =CERCA.VERT($A2&$B2;[Elenco_Completo.xls]nomiedati!$1:$65536;CONFRONTA(C$1;[Elenco_Completo.xls]nomiedati!$1:$1;0);FALSO)
    Giab


  • Confronto tra due tabelle
    di tonyblue data: 18/02/2014 14:39:31

    Gentilissimi,

    scusate il doppio post, ho sbagliato la procedura d'iscrizione.

    Vi chiedo un cortese aiuto per risolvere un problema che per voi presumo
    sarà di una enorme semplicità.

    Ho 2 fogli di lavoro diversi in Excel. Essi sono due file diversi.
    Nel primo file, vi è un elenco di persone predisposte per Nome e Cognome.
    Nel secondo file, vi è un altro elenco predisposto per Nome e per Cognome, con accanto una serie di dati,
    digitati in varie celle.

    Gradirei, poter confrontare i due file, in modo tale che nel mio primo file, per ogni nome e cognome INDIVIDUATO nel
    secondo file, mi restituisca il valore corrispondete alla cella "n" del secondo file.

    Grazie di cuore.