Confronto tra due fogli (o file) per verificare esistenza di dati comuni

Anonimo
2015-02-04T12:52:39+00:00

Ciao,

non riesco a trovare una soluzione per il seguente problemino:

Excel 2010:

ho due liste di aziende, in due file separati.

Nella prima lista (File1) ho le ragioni sociali ma non gli indirizzi email.

Nella seconda lista (File2) ho le ragioni sociali e gli indirizzi email.

E' probalbile, ma non è sicuro, che nel File2 (quello con le email) ci siano alcune aziende presenti anche nel File1.

Si tratta di 6.000 record per il File1 e 50.000 per il File2...non me la sento di farlo a mano :)

Come intuibile, quello che vorrei fare è verificare l'eventuale corrispondenza di aziende tra i due File.

Questo come primo step sarebbe già ottimo.

Se poi fosse possibile inserire automaticamente gli indirizzi email delle aziende del File2, qualora ci fosse corrispondenza, nelle relative righe delle aziende del File1, sarebbe il top.

Grazie mille.

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

6 risposte

Ordina per: Più utili
  1. Anonimo
    2015-02-04T15:14:42+00:00

    puoi usare la funzione Confronta. Confronta cerca un valore (ad esempio ogni songola ragione sociale del file 2) in un dato intervallo (l'insieme delle ragioni sociali del file 1) e se lo trova ti restitusce un numero che rappresenta la posizione di quel valore nell'intervallo, altrimenti ti restituisce un errore.

    Quindi se ottieni un numero è un dato che hai, se hai un errore non ce li hai.

    Guarda questoesempio. Questo lavora su fogli diversi dello stesso file, ma il concetto è identico

    La risposta è stata utile?

    2 persone hanno trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2015-02-04T15:37:20+00:00

    Ciao ClavitoClaud ,

    non riesco a trovare una soluzione per il seguente problemino:

    Excel 2010:

    ho due liste di aziende, in due file separati.

    Nella prima lista (File1) ho le ragioni sociali ma non gli indirizzi email.

    Nella seconda lista (File2) ho le ragioni sociali e gli indirizzi email.

    E' probalbile, ma non è sicuro, che nel File2 (quello con le email) ci siano alcune aziende presenti anche nel File1.

    Si tratta di 6.000 record per il File1 e 50.000 per il File2...non me la sento di farlo a mano :)

    Come intuibile, quello che vorrei fare è verificare l'eventuale corrispondenza di aziende tra i due File.

    Questo come primo step sarebbe già ottimo.

    Se poi fosse possibile inserire automaticamente gli indirizzi email delle aziende del File2, qualora ci fosse corrispondenza, nelle relative righe delle aziende del File1, sarebbe il top.

    Dato le dimensioni possibili estesi dei file, oltre alla soluzione di Alessandra, potresti anche prendere in considerazione una soluzione VBA, la quale dovrebbe essere molto veloce:

    • Alt-F11 per aprire l'editor di VBA
    • Alt-IMper inserire un nuovo modulo di codice
    • Nel nuovo modulo vuoto, incolla il seguente codice:

     '=========>>

    Option Explicit

    '--------->>

    Public Sub Tester()

        Dim srcWB As Workbook, destWB As Workbook

        Dim srcSH As Worksheet, destSH As Worksheet

        Dim srcRng As Range, destRng As Range

        Dim arrIn As Variant, arrOut As Variant

        Dim iRow As Long, jRow As Long

        Dim i As Long, j As Long, k As Long

        Dim sPath As String, sStr As String

        Const sName As String = "ClavitoClaud.xlsx"                             '<<===== Modifica

        Const sPercorso As String = "**C:\Pluto**"                                       '<<===== Modifica

        sStr = Application.PathSeparator

        If Right(sPercorso, 1) <> sStr Then

            sPath = sPercorso & sStr

        Else

            sPath = sPercorso

        End If

        Set srcWB = ThisWorkbook

        On Error Resume Next

        Set destWB = Workbooks(sName)

        On Error GoTo 0

        If destWB Is Nothing Then

            On Error GoTo XIT

            Application.ScreenUpdating = False

            Set destWB = Workbooks.Open(sPath & sName)

        End If

        Set srcSH = srcWB.Sheets("Foglio1")                                           '<<===== Modifica

        Set destSH = destWB.Sheets("Foglio1")                                       '<<===== Modifica

        With srcSH

            iRow = LastRow(srcSH, .Columns("A:A"))

            Set srcRng = .Range("A2:B" & iRow)

        End With

        With destSH

            jRow = LastRow(destSH, .Columns("A:A"))

            Set destRng = .Range("A2:B" & jRow)

        End With

        arrIn = srcRng.Value

        arrOut = destRng.Value

        For i = 1 To UBound(arrIn, 1)

            For j = 1 To UBound(arrOut, 1)

                If arrIn(i, 1) = arrOut(j, 1) Then

                    arrOut(j, 2) = arrIn(i, 2)

                    Exit For

                End If

            Next j

        Next i

        With Application

            .ScreenUpdating = False

            destRng.Value = arrOut

            .ScreenUpdating = True

        End With

        Exit Sub

    XIT:

        Application.ScreenUpdating = True

        Call MsgBox(Prompt:="Error " _

                            & Err.Number _

                            & " (" _

                            & Err.Description _

                            & ") nella routine: Tester", _

                    Buttons:=vbCritical, _

                    Title:="ERRORE")

    End Sub

    '<<=========

    • Alt-Q per chiudere l'editor di VBA e tornare a Excel.
    • Alt-F8 per aprire  la finestra di gestione delle macro
    • Seleziona Tester | Esegui

    ===

    Regards,

    Norman

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  3. Anonimo
    2015-02-04T17:02:25+00:00

    Ciao ClavitoClaud,

    Avrei dovuto aggiungere due punti:

    • Il codice suggerito da me dovrebbe essere incollato nel File2 (quello con gli indirizzi email);
    • Il file con il codice dovrebbe essere salavato in formato xlsm

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2015-02-04T16:59:34+00:00

    Grazie Norman,

    con un po' più di calma proverò anche la tua soluzione.

    Con il VBA sono a zero. 

    Thanks

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2015-02-04T16:57:49+00:00

    Geniale.

    Funziona.

    Poi con il filtro elimino gli #N/D e vedo solo le corrispondenze.

    Ottimo.

    Grazie millle.

    La risposta è stata utile?

    0 commenti Nessun commento