Confrontare dati tra due tabelle e copiarne i dati solo su una delle due tabelle

Anonimo
2010-10-14T23:04:22+00:00

Buonanotte

Visto che son quasi fuso anzi lo sono vengo subito al dunque, se mi è cocesso.....

Vorrei confrontare i dati di due cartelle presenti in due file diversi!

Ed incollare nella cartella di destinazione non tutte le colonne ma alcune, comprese l'ID univoco.

Preciso che in entrambi fogli di lavoro dei due file la colonna A è quella che contiene l'ID univoco e perciò la vera chiave di confronto.

I dati devono poter essere confrontabili anche se talvolta scritti in minuscolo ed altre volte in maiuscolo (ad esempio 123Norma corrisponde allo stesso codice ID univoco 123norma)

E' possibile o devo per forza incollare tutti i dati?

Ad esempio:

File1 residente in C:\documenti

File2 residente in D:\documenti

foglio di origine: File1 è presente un foglio11 con dati inseriti nelle colonne A B C D E (A è l'ID univoco)

foglio di destinazione: File2 è presente un foglio22 dove i dati andranno confrontati/copiati solo in A e B D (A è l'ID univoco)

Vi ringrazio come sempre dlela Vs pazienza e Vi auguro la buona notte....

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2010-10-16T07:20:50+00:00

qui mi restituisce errore 13 tipo non corrispondente

           sFunzione = "=COUNTIF([" & sNome & "]" & shAltro.Name & "!A1:A" & lRiga & ",A" & lng & ")"

          If Evaluate(sFunzione) = 0 Then

 

tieni conto che il file si chiama "0gestione ordini" e il foglio "db clienti"

 

devo cambiar qualcosa qui?

 

        Set shAltro = .Worksheets("db clienti")

        sNome = Left(.Name, InStr(.Name, ".") - 1)

 

Grazie

 

 

Fratello Eliano ti ha dato una possibile soluzione.  Un altra, potrebbe essere sotituire:

 "=COUNTIF([" & sNome & "]" & shAltro.Name & "!A1:A" & lRiga & ",A" & lng & ")"

con:

sFunzione = "=COUNTIF('[" & sNome & "]" & shAltro.Name & "'!A1:A" & lRiga & ",A" & lng & ")"

Rinnovo il consiglio di Fratello Eliano: MAI dare ai fogli nomi come : Totale Gennaio! Meglio ToataleGennaio o Totale_Gennaio. Sopratutto se poi utilizzi il vb per automatizzare i tuoi files. Grazie per l'attenzione.


--

La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.

--

Mauro Gamberini - Microsoft© MVP(Excel)

http://www.maurogsc.eu/

La risposta è stata utile?

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2010-10-15T15:22:52+00:00

Buongiorno Mauro non è proprio quello che cercavo, spero che quest'esempio chiarisca il mio desiderio di soluzione!

In sostanza confronto due tabelle con solo la colonna A in "comune" e se questa non è presente nella tabella 2 ne copia i valori nella colonne A B D.

Magari inserendo anche una limitazione sulle celle da controllare sia nel foglio 1 che nel 2. Ad esempio da A1 a E 500

Grazie

Andrea

e buon week end

 

Questa macro fa quanto chiedi(almeno spero!). Il file Questo.xls è quello che contiene il codice e la tabella 1 in Foglio1. Il file Altro.xls è quello che contiene la tabella 2 in Foglio1.  Modifica con i tuoi riferimenti a nome files e fogli. Entrambi i files devono essere aperti. Grazie per l'attenzione e buon fine settimana anche a te:

Public Sub m()

    Dim wkAltro As Workbook

    Dim wkQuesto As Workbook

    Dim shQuesto As Worksheet

    Dim shAltro As Worksheet

    Dim lUltRiga As Long

    Dim lRiga As Long

    Dim lng As Long

    Dim sNome As String

    Dim sFunzione As String

    Application.ScreenUpdating = False

    Set wkAltro = Workbooks("Altro.xls")

    Set wkQuesto = Workbooks("Questo.xls")

    With wkAltro

        Set shAltro = .Worksheets("Foglio1")

        sNome = Left(.Name, InStr(.Name, ".") - 1)

    End With

    With wkQuesto

        Set shQuesto = .Worksheets("Foglio1")

        .Activate

    End With

    With shQuesto

        lUltRiga = .Range("A" & .Rows.Count).End(xlUp).Row

        For lng = 1 To lUltRiga

            lRiga = shAltro.Range("A1").CurrentRegion.Rows.Count

            sFunzione = "=COUNTIF([" & sNome & "]" & shAltro.Name & "!A1:A" & lRiga & ",A" & lng & ")"

            If Evaluate(sFunzione) = 0 Then

                .Range("A" & lng & ":B" & lng).Copy _

                    Destination:=shAltro.Range("A" & lRiga + 1)

                .Range("D" & lng).Copy _

                    Destination:=shAltro.Range("D" & lRiga + 1)

            End If

        Next

    End With

    Application.ScreenUpdating = True

    Set shAltro = Nothing

    Set shQuesto = Nothing

    Set wkAltro = Nothing

    Set wkQuesto = Nothing

End Sub


--

La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.

--

Mauro Gamberini - Microsoft© MVP(Excel)

http://www.maurogsc.eu/

La risposta è stata utile?

0 commenti Nessun commento

9 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2010-10-15T14:33:55+00:00

    Buongiorno Mauro non è proprio quello che cercavo, spero che quest'esempio chiarisca il mio desiderio di soluzione!

    In sostanza confronto due tabelle con solo la colonna A in "comune" e se questa non è presente nella tabella 2 ne copia i valori nella colonne A B D.

    Magari inserendo anche una limitazione sulle celle da controllare sia nel foglio 1 che nel 2. Ad esempio da A1 a E 500

    Grazie

    Andrea

    e buon week end

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Eliminata

    Questa risposta è stata eliminata a causa di una violazione del codice di comportamento. La risposta è stata segnalata manualmente o identificata tramite il rilevamento automatizzato prima dell'esecuzione dell'azione. Per ulteriori informazioni, fai riferimento al codice di comportamento.


    I commenti sono stati disattivati. Ulteriori informazioni

  3. Anonimo
    2010-10-15T08:15:40+00:00

    Buonanotte

    Visto che son quasi fuso anzi lo sono vengo subito al dunque, se mi è cocesso.....

     

    Vorrei confrontare i dati di due cartelle presenti in due file diversi!

    Ed incollare nella cartella di destinazione non tutte le colonne ma alcune, comprese l'ID univoco.

    Preciso che in entrambi fogli di lavoro dei due file la colonna A è quella che contiene l'ID univoco e perciò la vera chiave di confronto.

    I dati devono poter essere confrontabili anche se talvolta scritti in minuscolo ed altre volte in maiuscolo (ad esempio 123Norma corrisponde allo stesso codice ID univoco 123norma)

     

    E' possibile o devo per forza incollare tutti i dati?

    Ad esempio:

    File1 residente in C:\documenti

    File2 residente in D:\documenti

     

    foglio di origine: File1 è presente un foglio11 con dati inseriti nelle colonne A B C D E (A è l'ID univoco)

    foglio di destinazione: File2 è presente un foglio22 dove i dati andranno confrontati/copiati solo in A e B D (A è l'ID univoco)

     

    Vi ringrazio come sempre dlela Vs pazienza e Vi auguro la buona notte....

    Non è chiaro quello che vuoi fare, almeno per me. Se(se) hai un ID univoco nel vero senso della parola(quindi una sola riga con quell'ID), te la cavi con un CERCA.VERT() purchè l' ID sia(come sempre dovrebbe essere) la prima colonna a sx delle tabelle.


    --

    La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.

    --

    Mauro Gamberini - Microsoft© MVP(Excel)

    http://www.maurogsc.eu/

    La risposta è stata utile?

    0 commenti Nessun commento