Condividi:        

[Excel - Calc] Confrontare due file

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[Excel - Calc] Confrontare due file

Postdi apprendistaIT » 13/10/09 16:58

[Excel - Calc] Confrontare due file

Ciao a tutti,
avrei un'altra domanda da farvi, ogni giorno scarico un catalogo di prodotti in formato excel e avrei la necessità di confrontare quello che scarico con quello del giorno prima, vedere se ci sono prodotti nuovi e vedere se sono stati eliminati altri prodotti, quindi la domanda è: è possibile farlo con le formule in excel o è meglio usare un altro metodo?

Io pensavo ad una cosa del genere:

Creo un nuovo file con 4 fogli
Carico il catalogo vecchio in foglio1
Carico catalogo nuovo in foglio2
Nel foglio3 creo una formula che mi richiami i prodotti eliminati (quindi quelli presenti nel vecchio catalogo ma non più presenti nel nuovo, ed eventualmente li evidenzio in rosso)
Nel foglio4 creo una formula che mi richiami i prodotti aggiunti (quindi quelli presenti nel nuovo catalogo non presenti in quello vecchio, ed eventualmente li evidenzio in giallo)

Per il momento non ho ancora trovato nulla sul forum che possa fare al caso mio, intanto comunque continuo a cercare, non si sa mai :)

Grazie
Ciao
Ciao
apprendistaIT
Utente Junior
 
Post: 63
Iscritto il: 07/10/09 15:45

Sponsor
 

Re: [Excel - Calc] Confrontare due file

Postdi Anthony47 » 13/10/09 17:36

Ok, su che cosa di quello che hai detto ti serve aiuto?
E poi, giorno per giorno elabori un nuovo file, o mantieni un unico file che e' la somma di tutte le modifiche intervenute?

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel - Calc] Confrontare due file

Postdi apprendistaIT » 13/10/09 23:14

Ciao Anthony,
io ho la possibilità di scaricare un file excel con un catalogo di prodotti da un fornitore, questo file lo utilizzerò per caricare i prodotti in una spece di gestionale e poi forse un piccolo e-commerce (tramite csv), almeno una volta al giorno questo file viene aggiornato dal fornitore stesso, quindi io una volta al giorno dovrò scaricare il nuovo file e confrontarlo con quello più vecchio per vedere se sono stati caricati nuovi prodotti o eliminati altri, i file in più verranno caricati nel gestionale e quelli eliminati faranno la stessa fine :), quindi il file nuovo diventera quello vecchio il giorno dopo.

L'aiuto mi serve appunto per capire in che direzione andare :D

Spero di essere stato abbastanza chiaro :D
Ciao
Ciao
apprendistaIT
Utente Junior
 
Post: 63
Iscritto il: 07/10/09 15:45

Re: [Excel - Calc] Confrontare due file

Postdi Flash30005 » 14/10/09 09:18

Mi domandavo perché colorare le righe e non lasciare solo le righe interessate? es.
foglio3 solo quelle che erano nel vecchio catalogo e non più nel nuovo
foglio4 solo prodotti che sono stati aggiunti nel nuovo
(queste righe potrebbero tornare utili per ulteriori utilizzi)
allora ho creato una macro che ha questa funzione
Codice: Seleziona tutto
Sub Confronta()
' Foglio1 Vecchio Catalogo
' Foglio2 Nuovo Catalogo
' Foglio3 Prodotti che non sono più nel nuovo catalogo
' Foglio4 Nuovi prodotti (non erano nel vecchio catalogo)
Call CopiaF
URS = Worksheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row   '<<<< alias Foglio3
URA = Worksheets("Foglio2").Range("A" & Rows.Count).End(xlUp).Row  '<<< alias Foglio4
For RS = 2 To URS
    For RA = URA To 2 Step -1
        If Worksheets("Foglio1").Cells(RS, 1).Value = Worksheets("Foglio4").Cells(RA, 1).Value Then Worksheets("Foglio4").Rows(RA & ":" & RA).Delete
    Next RA
Next RS
For RA = 2 To URA
    For RS = URS To 2 Step -1
        If Worksheets("Foglio2").Cells(RA, 1).Value = Worksheets("Foglio3").Cells(RS, 1).Value Then Worksheets("Foglio3").Rows(RS & ":" & RS).Delete
    Next RS
Next RA
End Sub
Sub CopiaF()
    Sheets("Foglio3").Select
    Cells.Select
    Selection.Clear
    Range("D10").Select
    Sheets("Foglio4").Select
    Cells.Select
    Selection.Clear
    Range("A1").Select
    Sheets("Foglio1").Select
    Cells.Select
    Selection.Copy
    Sheets("Foglio3").Select
    Cells.Select
    ActiveSheet.Paste
    Range("A1").Select
    Sheets("Foglio2").Select
    Cells.Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Foglio4").Select
    Range("A1").Select
    ActiveSheet.Paste
    Range("A1").Select
    Sheets("Foglio3").Select
End Sub


Se intendi colorarle allora puoi usare questa macro (la macro CopiaF è sempre necessaria)
Codice: Seleziona tutto
Sub ConfrontaEColora()
' Foglio1 Vecchio Catalogo
' Foglio2 Nuovo Catalogo
' Foglio3 Prodotti che non sono più nel nuovo catalogo
' Foglio4 Nuovi prodotti (non erano nel vecchio catalogo)
Call CopiaF
URS = Worksheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row   '<<<< alias Foglio3
UCS = Worksheets("Foglio1").Range("IV2").End(xlToLeft).Column
Worksheets("Foglio3").Select
    Worksheets("Foglio3").Range(Cells(2, 1), Cells(URS, UCS)).Interior.ColorIndex = 44
URA = Worksheets("Foglio2").Range("A" & Rows.Count).End(xlUp).Row  '<<< alias Foglio4
UCA = Worksheets("Foglio2").Range("IV2").End(xlToLeft).Column
Worksheets("Foglio4").Select
    Worksheets("Foglio4").Range(Cells(2, 1), Cells(URA, UCA)).Interior.ColorIndex = 6
For RS = 2 To URS
    For RA = URA To 2 Step -1
        If Worksheets("Foglio1").Cells(RS, 1).Value = Worksheets("Foglio4").Cells(RA, 1).Value Then Worksheets("Foglio4").Rows(RA & ":" & RA).Interior.ColorIndex = 0
    Next RA
Next RS
For RA = 2 To URA
    For RS = URS To 2 Step -1
        If Worksheets("Foglio2").Cells(RA, 1).Value = Worksheets("Foglio3").Cells(RS, 1).Value Then Worksheets("Foglio3").Rows(RS & ":" & RS).Interior.ColorIndex = 0
    Next RS
Next RA
End Sub


Ambedue le macro prevedono una testata nella riga 1 che non verrà processata
e fanno il confronto solo prendendo in esame il valore nella colonna A (suppongo Codice Prodotto), oltre a poter variare la colonna di confronto puoi aggiungere ulteriori condizioni (altre colonne) affinché il valore di confronto diventi univoco.

Fai sapere
Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel - Calc] Confrontare due file

Postdi apprendistaIT » 14/10/09 09:43

Ciao Flash, grazie per la risposta, il colore effettivamente non è indispensabile :D
Ora provo il tuo codice e vedo cosa riesco a concludere :)
Ciao
Ciao
apprendistaIT
Utente Junior
 
Post: 63
Iscritto il: 07/10/09 15:45

Re: [Excel - Calc] Confrontare due file

Postdi apprendistaIT » 14/10/09 10:15

I colori era principalmente per non confondermi :D
Piccola premessa, non ho mai lavorato con macro quindi questa è l'occasione per imparare una cosa nuova :D
Ciao
apprendistaIT
Utente Junior
 
Post: 63
Iscritto il: 07/10/09 15:45

Re: [Excel - Calc] Confrontare due file

Postdi Flash30005 » 14/10/09 10:56

Sai come creare un modulo e inserire le macro?
Da qualsiasi foglio
vai sulla barra Munu selezioni Strumenti > Macro > Visula Basic Editor
(oppure Alt+F11)
Ti si apre l'editor del VBE
vai sulla barra Menu selezioni Inserisci > Modulo
nella pagina bianca di destra incolli l'intero codice postato
Per avviare la macro dall'editor premi il tasto |> freccia a destra (come il Play dei registratori)
Puoi chiudere la finestra dell'editor e avviare la macro da qualsiasi foglio con
Strumenti > Macro > Macro
(oppure ALT+F8 )
appare una finestra con l'elenco delle macro esistenti
selezioni "Confronta" (nome della macro postata) e poi premi il tasto Esegui (sulla destra)

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel - Calc] Confrontare due file

Postdi apprendistaIT » 14/10/09 11:59

Io sto lavorando con calc di openoffice, la procedura per copiare la macro è simile ma sono riuscito ugualmente solo che quando provo ad eseguire la macro si blocca a metà del codice, esattamente alla riga "Sheets("Foglio3").Select" subito dopo "Sub CopiaF()" dandomi questo errore:
"Errore di runtime basic.
Sottoprocedura o funzione non definita."
ciao
Ciao
apprendistaIT
Utente Junior
 
Post: 63
Iscritto il: 07/10/09 15:45

Re: [Excel - Calc] Confrontare due file

Postdi Flash30005 » 14/10/09 13:12

Pensavo lavorassi in excel... Questa sezione è dedicata a Applicazioni Office Windows :o

e credo che oltre al problema da te riscontrato avrai altri errori perché le macro dei due applicativi non sono compatibili tra loro.
Controlla che i fogli abbiano i nomi elencati (Foglio1, Foglio2, Foglio3 e Foglio4) e non sono sicuro che calc prenda in esame questi nomi.
Dal tipo di errore, sembrerebbe che non trova la routine CopiaF e se hai copiata e incollata nel "modulo" (non so come chiama, CalcOpenOffice, il "contenitore" delle macro) allora non riconosce il comando Call, che nel Vbe significa "chiama" (dall'inglese), prova a toglierlo e lasciare solo CopiaF altrimenti, visto che si tratta solo di una sola chiamata puoi copiare tutto c'ò che è in CopiaF (escluna la prima riga: Sub CopiaF() e l'ultima: End Sub) incollandola al posto della riga con Call CopiaF, facendo così inserisci l'intero codice di CopiaF all'interno della macro principale senza più bisogno di chiamata per eseguire la routine.
Se non dovesse funzionare nemmeno così, si dovranno "convertire" questi codici e renderli idonei per Calc.

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel - Calc] Confrontare due file

Postdi apprendistaIT » 14/10/09 21:58

Colpa mia, non ho specificato meglio, l'avevo messo solo nel titolo :)
Se pensi sia il caso di spostarla non c'è problema, trattandosi di fogli di calcolo pensavo fosse la sezione giusta :)

Ho fatto come mi dici ma purtroppo non funziona ancora :(
Ho letto che forse si possono convertire le macro di excel scritte in VBA nel linguaggio di Openoffice che dovrebbe essere Basic (se ho capito bene).

Ad ogni modo questo è l'unico sistema per fare questa procedura?
Ciao
apprendistaIT
Utente Junior
 
Post: 63
Iscritto il: 07/10/09 15:45

Re: [Excel - Calc] Confrontare due file

Postdi Flash30005 » 15/10/09 19:38

Non ho alcuna esperienza di openoffice, l'unica che feci tempo fa, da un amico è stata quella di provare ad aprire un file di excel con una macro e chiaramante non funzionò, provai a fare la macro direttamente in openoffice nel suo Pc ma non avendo conoscenza dello script non riuscii a fare nulla, anche per il poco tempo a disposizione (mezz'ora).

Vediamo se qualche altro utente può darti una mano.

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel - Calc] Confrontare due file

Postdi apprendistaIT » 15/10/09 20:34

Si trova anche poco in giro su openoffice, avevo letto qualcosa su eventuali plugin per far funzionare VBA su OOo ma non so se funzionano....
Intanto mi sto leggendo un po' di documentazione per vedere se fosse possibile convertire il codice.

Ciao
Ciao
apprendistaIT
Utente Junior
 
Post: 63
Iscritto il: 07/10/09 15:45

Re: [Excel - Calc] Confrontare due file

Postdi Flash30005 » 15/10/09 21:22

Ma... il pacchetto di Office costa talmente poco... :roll: e vale il suo prezzo ;)

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel - Calc] Confrontare due file

Postdi Anthony47 » 15/10/09 21:28

Vediamo se in questo altro modo possiamo fare di piu':
-creati un file di servizio vuoto
-registra una macro mentre:
--apri il file storico, attivi il foglio buono (*), copi le colonne utili e incolli su Foglio1 del nuovo file
--apri il file ultimo ricevuto, attivi il foglio buono (*), copi le colonne utili e incolli su Foglio2 del nuovo file
-fermi la registrazione della macro
-su Foglio1 inserisci la formula
Codice: Seleziona tutto
=Se(val.errore(Cerca.vert(IlPartNumber-di-Foglio1;laColonnaColPartNumber-di-Foglio2;1;0));1;0)

-su Foglio2 inserisci la formula
Codice: Seleziona tutto
=Se(val.errore(Cerca.vert(IlPartNumber-di-Foglio2;laColonnaColPartNumber-di-Foglio1;1;0));1;0)

Inserisci le formule sulla prima riga di dati di Foglio1 e Foglio2, in una colonna libera, e copi poi quella formula in verticale quanto basta (diciamo tutti i dati correnti piu' almeno 100 righe)
Le formule ti indicheranno: su Foglio1, i dati che NON SONO piu' presenti nel foglio ricevuto, quindi dati eliminare nello storico; su Foglio2 i dati che NON SONO ANCORA presenti sul file storico, quindi da aggiungere.

Per avere l' evidenza dei record puoi applicare il Filtro automatico su queste colonne e filtrare per valore 1.
Nota*: se i file in oggetto hanno piu' fogli, e' utile che prima di avviare la registrazione macro salvi e chiudi tali file con il foglio attivo diverso da quello che devi copiare.

Il "giorno dopo" dovrebbe essere sufficiente aprire il file di servizio, con gli altri file chiusi, e lanciare la macro.

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel - Calc] Confrontare due file

Postdi apprendistaIT » 15/10/09 22:55

Flash30005 ha scritto:Ma... il pacchetto di Office costa talmente poco... :roll: e vale il suo prezzo ;)

Ciao

Lo so, ma al momento non è possibile usare una Office.

@Anthony47
Domani provo e ti so dire :)


Ho trovato un sito che da la possibilità di convertire il codice VBA in Basic per OOo, io l'ho provato ma con il codice di Flash non ha funzionato, però potrebbe servire in futuro per altre applicazioni, chi lo sa :)
Posso metterlo?
Ciao
apprendistaIT
Utente Junior
 
Post: 63
Iscritto il: 07/10/09 15:45

Re: [Excel - Calc] Confrontare due file

Postdi Anthony47 » 15/10/09 23:34

Ho trovato un sito che da la possibilità di convertire il codice VBA in Basic per OOo, io l'ho provato [.....] potrebbe servire in futuro per altre applicazioni, chi lo sa :)
Posso metterlo?
Si, mettilo pure.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel - Calc] Confrontare due file

Postdi apprendistaIT » 16/10/09 09:04

Ciao
apprendistaIT
Utente Junior
 
Post: 63
Iscritto il: 07/10/09 15:45

Re: [Excel - Calc] Confrontare due file

Postdi apprendistaIT » 19/10/09 09:34

Eccomi, scusate il ritardo per la risposta :)
Ora sto procedendo con il secondo metodo, ho visto che la formula SE praticamente mi scrive 0 se trova la corrispondenza e 1 se non trova nulla, ottimo :)

Appena ho la possibilità di provare su una licenza di Excel voglio provare anche la prima macro :D
Ciao
apprendistaIT
Utente Junior
 
Post: 63
Iscritto il: 07/10/09 15:45

Re: [Excel - Calc] Confrontare due file

Postdi apprendistaIT » 25/10/09 16:32

Eccomi qui per un aggiornamento :D

Ho avuto modo di provare la macro di Flash su una licenza di office da un amico (ero curioso di vederne il funzionamento :)), ho notato che nel foglio 3 e 4 mette praticamente la lista completa degli articoli, non scrive solo quelli che mancano nell'altra lista, comunque fa lo stesso perchè poi non avrei la possibilità di adoperarla :)
Grazie però della disponibilità :)

Anthony47 ha scritto:Vediamo se in questo altro modo possiamo fare di piu':
-creati un file di servizio vuoto
-registra una macro mentre:
--apri il file storico, attivi il foglio buono (*), copi le colonne utili e incolli su Foglio1 del nuovo file
--apri il file ultimo ricevuto, attivi il foglio buono (*), copi le colonne utili e incolli su Foglio2 del nuovo file
-fermi la registrazione della macro
-su Foglio1 inserisci la formula
Codice: Seleziona tutto
=Se(val.errore(Cerca.vert(IlPartNumber-di-Foglio1;laColonnaColPartNumber-di-Foglio2;1;0));1;0)

-su Foglio2 inserisci la formula
Codice: Seleziona tutto
=Se(val.errore(Cerca.vert(IlPartNumber-di-Foglio2;laColonnaColPartNumber-di-Foglio1;1;0));1;0)

Inserisci le formule sulla prima riga di dati di Foglio1 e Foglio2, in una colonna libera, e copi poi quella formula in verticale quanto basta (diciamo tutti i dati correnti piu' almeno 100 righe)
Le formule ti indicheranno: su Foglio1, i dati che NON SONO piu' presenti nel foglio ricevuto, quindi dati eliminare nello storico; su Foglio2 i dati che NON SONO ANCORA presenti sul file storico, quindi da aggiungere.

Per avere l' evidenza dei record puoi applicare il Filtro automatico su queste colonne e filtrare per valore 1.
Nota*: se i file in oggetto hanno piu' fogli, e' utile che prima di avviare la registrazione macro salvi e chiudi tali file con il foglio attivo diverso da quello che devi copiare.

Il "giorno dopo" dovrebbe essere sufficiente aprire il file di servizio, con gli altri file chiusi, e lanciare la macro.

Ciao.

Intanto ho portato avanti la formula che mi hai scritto, con la macro che mi hai detto di fare non sono riuscito ma con Calc c'è una funzione valida che mi da la possibilità di caricare sia interi fogli/file che porzioni di essi e quindi ho utilizzato quella per fare il caricamento così ogni volta che apro il file mi carica in automatico i due cataloghi.

Poi ho messo le formule SE che hai scritto e nel foglio 3 e 4 mi sono creato altre formule che mi scrivessero la riga corrispondente se veniva trovato il valore 1.

Codice: Seleziona tutto
A1
=SE(foglio_vecchio.J1=1;foglio_vecchio.A1;"")
B1
=SE(foglio_vecchio.J1=1;foglio_vecchio.B1;"")
C1
=SE(foglio_vecchio.J1=1;foglio_vecchio.C1;"")

e così via per tutte le celle che utilizzo.

Mi sono rinominato i fogli per non fare confusione :)

Visto che la formula mi lasciava degli spazi bianchi (perchè se non trovava il file mi lasciava vuota la cella) ho provato a registrare una macro mentre utilizzo la funzione ordina in modo decrescente il foglio 1 ed il foglio 2 in modo da avere le righe con il risultato 1 tutte insieme, (questa volta ha funzionato però :)) così ora nel foglio 3 e 4 ho i miei articoli "mancanti" tutti ragruppati.
Forse è un po' macchinoso ma almeno non devo fare tutto a mano.

Speri di essermi spiegato bene :P

Grazie ancora per l'aiuto che mi avete dato :D
Ciao
apprendistaIT
Utente Junior
 
Post: 63
Iscritto il: 07/10/09 15:45

Re: [Excel - Calc] Confrontare due file

Postdi Flash30005 » 25/10/09 18:58

apprendistaIT ha scritto:Ho avuto modo di provare la macro di Flash su una licenza di office da un amico (ero curioso di vederne il funzionamento ), ho notato che nel foglio 3 e 4 mette praticamente la lista completa degli articoli, non scrive solo quelli che mancano nell'altra lista,

:?:
foglio1 e foglio2 i due cataloghi come in figura

Immagine

dopo macro ho questo risultato:

Immagine

Che è appunto quanto previsto ;)

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "[Excel - Calc] Confrontare due file":


Chi c’è in linea

Visitano il forum: Nessuno e 34 ospiti