Confronto tra due file

Salve a tutti.
Avrei bisogno di una mano per confrontare due file calc.
Questi file hanno diverse colonne tra di loro. Ma una colonna, in entrambi i file, contiene i valori che vorrei confrontare.
Vorrei venissero evidenziate le differenze tra la colonna A del File1 con la colonna A del File2. Il contenuto delle celle è solo numerico.
Ho provato con ->Formato->Condizione… ma non riesco.
Mi vengono evidenziate tutti i valori della colonna A sul File1 indistintamente. :pensive:
Faccio presente che nel File1 ho 4795 righe. Nel File2 ho 9587 righe.
Spero di essermi spiegato in maniera chiara.
Grazie mille per il supporto che potrete darmi.

Buondì. Allega un esempio ridotto mettendo a mano il risultato che vorresti?

Eccolo qua
esempio.ods (8.2 KB)

Premesso che, con la versione 6.0.6.2 che ancora uso (non so le successive), mettere in un file uno o più riferimenti ad altro file è spesso fonte di rallentamenti, intoppi e complicazioni, per cui preferisco copiare -almeno momentaneamente- uno dei due fogli da confrontare nell’altro file, potresti a mio avviso procedere utilizzando la funzione SE in una nuova colonna che metti in uno dei due file.
Con riferimento alla creazione guidata, posizionandoti sulla riga 1 della nuova colonna:
In Test metti la condizione: File1.A1=File.2.A1 (seleziona le due celle con il mouse)
Se il test risulta vero, fa’ scrivere “uguale”, se risulta falso "diverso"
Ricopi la funzione SE in tutte le altre righe.

Questa soluzione ha un limite: se un certo dato esiste in entrambi gli elenchi, ma non nella stessa posizione, il sistema ti risponderà DIVERSO. Per individuare casi del genere devi utilizzare la funzione CERCA.VERT (nel file 2, facendo cercare nel file 1, che ha molti meno dati).

1 Like

Ti ringrazio per la risposta.
La versione che utilizzo io è la 6.4.7.2, ma non credo faccia differenza.
Si ho pensato anche io di spostare momentaneamente i dati da confrontare su uno stesso file su fogli diversi, come nell’esempio che ho allegato sopra.
Ti chiedo gentilmente se, basandoti sempre su quell’esempio, mi potresti dire come dovrei fare tenendo conto del fatto che i dati uguali, come hai ben pensato, potrebbero trovarsi su righe diverse.
Grazie mille.

Ciao. Se il risultato voluto è quello di Foglio2, in B3 da tirare in basso metti
=SE(VAL.NUMERO(CONFRONTA(A3;Foglio1!$A$3:$A$7;0));"uguale";"diverso")

1 Like

Grazie tante per la risposta.
Allora ho provato ad incollare la soluzione da te proposta nell’esempio che ho allegato…ma ahimè mi restituisce in tutte le righe: “diverso”.
Sbaglio da qualche parte per caso…non capisco ??

EDIT.
Ho modificato ‘il criterio di ricerca’ e adesso funziona.
Però vorrei capire se si può fare una cosa, sempre in riferimento a questo quesito.
Ho notato che “tirando in basso” la soluzione che mi hai scritto, il criterio di ricerca incrementa di un tot di righe.
Es nella prima riga, su B3 nel Foglio2 è così :
=SE(VAL.NUMERO(CONFRONTA(A3;$Foglio1.A3:A100;0));“uguale”;“diverso”)
nella seconda riga:
=SE(VAL.NUMERO(CONFRONTA(A4;$Foglio1.A4:A101;0));“uguale”;“diverso”)
nella terza riga:
=SE(VAL.NUMERO(CONFRONTA(A5;$Foglio1.A5:A103;0));“uguale”;“diverso”)
e via così.
Sarebbe possibile invece lasciare SEMPRE invariato l’intervallo di celle alle quali fare riferimento ?
Sempre rifacendomi all’esempio, lasciare sempre l’intervallo da A3:A9 per esempio ?
Grazie ancora.

Effettivamente come ha fatto notare Rosanna1 il controllo che mi necessita fare è anche su quei numeri uguali ma su righe diverse.
Ovvero può capitare che uno stesso valore si trovi anche su una riga differente !
Come fare a questo punto ?
:confounded:

Scusa il ritardo. La prima formula non ti funzionava perchè io ho impostato la sintassi della formula come excel.
Corretta (o meglio con la sintassi per calc) è così
=SE(VAL.NUMERO(CONFRONTA(A3;$Foglio1.$A$3:$A$7;0));"uguale";"diverso")
Notare anche i riferimenti assoluti dell’intervallo $Foglio1.$A$3:$A$7 che fa si che durante il trascinamento l’intervallo rimanga bloccato.

1 Like

Per trovare i dati non disposti nello stesso ordine, procedi così:

  1. copia (o sposta temporaneamente) il foglio del file più piccolo (4795 righe) nel file più grande; non è indispensabile, ma riduce i tempi di elaborazione ed evita possibili intoppi;

  2. inserisci una nuova colonna nel foglio con 9587 dati, e nella riga del primo (la 3 nell’esempio) imposti la funzione CERCA.VERT così:

=CERCA.VERT(A3;$‘Foglio1 - 4795 dati’.$A$3:$A$4799;1;0)
dove A3 è il dato del file grande di cui vuoi verificare la presenza nel file piccolo, $‘Foglio1 - 4795 dati’.$A$3:$A$4799 è l’area del foglio proveniente dal file piccolo contenente i 4795 dati (i $ anteposti ai riferimenti di cella servono a mantenerli invariati quando copierai la funzione sulle altre righe); 1 dice a CERCA.VERT di quante colonne deve spostarsi a destra per prelevare il dato che vuoi: nel nostro caso l’area di ricerca è costituita da una sola colonna, ma puoi usare CERCA.VERT per trasferire dati da un elenco ad un altro, ad es. per trascrivere l’indirizzo o la data di nascita associati ad un nominativo; 0 infine prescrive a CERCA.VERT di trovarti solo le corrispondenze esatte, cioè i dati identici nei due elenchi.

  1. CERCA.VERT ti riporterà il dato se l’ha trovato, in qualsiasi posizione, nell’elenco breve, l’errore #N/D se non l’ha trovato. Per ottenere una dicitura del genere “uguale/diverso” (direi però meglio “presente/assente”), che ti conviene mettere come intestazione alla colonna in cui hai scritto CERCA.VERT, procedi così:

  2. taglia tutta la funzione CERCA.VERT eccetto il segno = iniziale;

  3. apri la creazione guidata di funzioni e scegli la funzione SE;

  4. nella finestrella TEST scrivi TIPO(, incolli la funzione CERCA.VERT, e in coda aggiungi )=16. Così facendo hai inglobato CERCA.VERT in una funzione TIPO, che indica il tipo di dato da essa risultante con un codice numerico, che è 16 nel caso sia un errore, 1 se è un numero, 2 se è un testo, e così via

  5. nella creazione guidata di SE scrivi “no” (o “diverso”, o “assente”, come preferisci) nella finestrella “Allora il valore”, e “sì” (o “uguale”, o “presente”) nella finestrella “Altrimenti il valore” . Dai l’OK.
    Deve risultarti, complessivamente, la scrittura:
    =SE(TIPO(CERCA.VERT(A3;$‘Foglio1 - 4795 dati’.$A$3:$A$4799;1;0))=16;“no”;“sì”), e nella cella ti comparirà no se il dato manca nel foglio proveniente dal file piccolo, se invece vi è presente.

  6. Ricopi la funzione così costruita su tutte le altre celle del foglio da 9587 dati.

Allego l’esempio rielaborato
esempio (1).ods (9.2 KB)

Non so come ringraziarti !!!
Fai per caso dei corsi ? (non sto scherzando) O sapresti consigliarmene di validi ?
Grazie veramente !

Ho seguito molti anni fa un corso su Excel (le funzioni sono identiche, spesso persino nel nome), e poi ho smanettato parecchio, sia per lavoro sia per attività personali. Non saprei suggerirti dei corsi, ma consiglio di esplorare la creazione guidata di funzioni e provare ad applicarle ai casi propri (anche se all’inizio si impiega molto più tempo che nel fare a mano lo stesso lavoro).

1 Like

Suppongo tu voglia copiare e incollare da qualche altra parte solo il valore di B3 e non anche la funzione =SE(TIPO(CERCA,VERT… In tal caso devi selezionare la cella o l’area da copiare, attivare (dal menu Modifica o cliccando col tasto destro del mouse ) Copia, spostarti sulla nuova cella o area da riempire e attivare Incolla speciale scegliendo Testo, o Testo non formattato (che incolla qualsiasi cosa eccetto la formula), o quant’altro ti serva nella finestra di Incolla speciale che non sia Formula.

Puoi anche re-incollare sull’area stessa da cui hai copiato, così eliminerai la funzione =SE(TIPO(CERCA.VERT… conservandone solo il risultato. Anzi, questa manovra ti è necessaria se vuoi riportare al suo posto il foglio proveniente dal file piccolo (o toglierlo comunque dal file grande, per ridurne la dimensione).
Ulteriore opzione che può esserti utile, soprattutto se i due files sono soggetti a variazioni nel tempo e devi continuare a confrontarli, è quella di conservare la funzione =SE(TIPO(CERCA.VERT… solo in una cella (potresti allo scopo inserire un paio di righe in alto in entrambi i fogli, e copiarla nella prima riga del foglio con più dati), e sostituirla nel resto della tabella con Copia - Incolla speciale.
Così facendo ridurrai la dimensione del file (CERCA.VERT, se ripetuto molte volte, lo appesantisce parecchio), ma avrai sempre disponibile la formula (da copiare e incollare) quando dovrai aggiornare il confronto. Dovrai solo fare attenzione a che l’area di ricerca indicata in CERCA.VERT copra tutte le righe occupate dalla versione aggiornata del file messo a confronto, ed ampliarla in caso contrario.

1 Like

Salve di nuovo. In merito sempre allo stesso file, adesso avrei un’altro tipo di ricerca da effettuare, ma questa volta su DUE colonne/righe nei due Fogli presenti.
Ovvero deve sempre trovare i valori assenti di un foglio rispetto ad un altro ma controllando due colonne di dati.
Ovvero vorrei mettere a confronto tutte le righe del foglio 1 colonne F e G, con tutte le righe del foglio 2 colonne E ed F.
Ho provato a modificare la formula che Rossana1 ha scritto…ma evidentemente non sono capace :sleepy:
Grazie mille per l’aiuto

Se ho ben capito, devono essere uguali le coppie di dati nelle due colonne.
Non ho sotto mano il vecchio file, che ricordo vagamente (conviene sempre allegare l’esempio del problema). Una soluzione potrebbe essere questa:

  1. in una colonna vuota del foglio che ha più dati scrivi la funzione CONCATENA per unire il contenuto delle celle nelle due colonne (ad es. =CONCATENA(F3;G3),se è il foglio 1 che ha più dati).

  2. Sull’altro foglio scrvi la funzione CERCA.VERT, mettendo come criterio di ricerca un’altra funzione CONCATENA che unisca le due celle presenti su quel foglio, e come area di ricerca la colonna dell’altro foglio in cui hai scritto la prima funzione CONCATENA. Il terzo elemento di CERCA.VERT deve essere 1 (cerchi su una sola colonna), il quarto 0 (vuoi una corrispondenza esatta).

1 Like

Sempre eccezzionale !!!
Bella la funziona CONCATENA perchè NON somma i valori, ma li affianca.
Hai intuito subito la richiesta, grazie mille !! :blossom: