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

Re: [Excel - Calc] Confrontare due file

Postdi antonio.caci » 16/12/09 12:27

Devo aggiungere che anche lasciando solo le prime dieci righe non colora lo stesso le celle variate ..... :undecided:
problemi di aggiornamento di excel ? o altro .....?
antonio.caci
Utente Junior
 
Post: 16
Iscritto il: 26/10/09 14:46

Sponsor
 

Re: [Excel - Calc] Confrontare due file

Postdi antonio.caci » 17/12/09 21:17

Help me pleae ?
grazie...
antonio.caci
Utente Junior
 
Post: 16
Iscritto il: 26/10/09 14:46

Re: [Excel - Calc] Confrontare due file

Postdi Flash30005 » 18/12/09 03:25

Ho inserito 500 righe nel foglio1 e altrettante nel foglio2
ho avviato la macro ConfrontaEColora e le righe nel foglio4 si sono colorate.

Ora ti vorrei chiedere i riferimenti sono rimasti invariati?
Intendo dire, nella colonna A vi è sempre l'articolo e in B il quantitativo, sia nel foglio1 che nel foglio2?
Inoltre la colonna A ha righe complete che arrivano alla 400ª riga?

Altrimenti...
copia l'intera macro (sono 2) e incollale nel VBA di in una nuova cartella
in questa cartella aggiungi il foglio4
poi copia l'intera colonna A e B del foglio1 tuo file-dati e incollali (incolla speciale: solo valori) nel foglio1 della nuova cartella e fai altrettanto con il foglio2.
Chiudi il "vecchio" file e prova la macro con il nuovo file

Fai sapere
Ciao

P.s. non c'è alcun aggiornamento da fare ad excel, io uso il 2003
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 antonio.caci » 19/12/09 11:24

ciao.
Prima di tutto grazie per l'ottimo lavoro.
Ho delle colonne che vanno da A alla T e righe che al momento arrivano quasi a 400.
All'interno ci sono vari dati, numerici, testuali, date.
La prima colonna è progressiva numerica e va da 1,2,3,4, etc, mentre la prima riga è d'intestazione N°, data,nome,cognome,telefono,mail,etc.
Ricordo che devo trovare le differenze tra due fogli excel(in pratica io invio un foglio ad un collega lui fa delle variazioni e me lo rimanda,io vorrei avere un terzo foglio con evidenziate colorate le modifiche effettuate da lui)
Adesso devo provare su un altro pc, attualmente qui ho la beta di excel 2010 in inglese e mi sa che fa confusione con la denominazione fogli e sheet perchè mi dà un fantomatico errore 400, cmq avevo già provato a fare come da te suggerito(su excel 2007) e copiare la macro in vb(senza successo),ma non ho provato a fare il copia speciale solo dati e senza formattazione.Spero di provare in questo wekeend e riferire.
ciao Antonio
antonio.caci
Utente Junior
 
Post: 16
Iscritto il: 26/10/09 14:46

Re: [Excel - Calc] Confrontare due file

Postdi Extrude » 23/01/11 14:40

Ciao a tutti,

simile il caso ma avrei bisogno di estendere la verifica dei contenuti (tra Foglio1 e Foglio2) di tutti i dati contenuti nelle righe (una volta verificato che il dato contenuto nella Colonna A e' uguale.

in sostanza io estraggo settimanalmente da un tool aziendale un elenco Excel 2003 (formattato con valore testo in tutte le sue parti).

volendo usare le macro postate ad oggi come le potrei modificare affinche' nel Foglio 3 mi faccia praticamente una copia del contenuto del Foglio2 (elenco aggiornato) con evidenziati i dati cambiati rispetto al Foglio1 (elenco precedente).

Rimanendo in attesa di un vostro gentile riscontro, faccio presente che avevo postato una cosa simile di cui Anthony47 mi faceva presente che era troppo complicata la descrizione che fornivo.
Di questo mi scuso in quanto non avevo verificato a dovere quanto gia' postato in questo Topic.

grazie
Extrude
Utente Junior
 
Post: 28
Iscritto il: 19/06/10 07:37

Re: [Excel - Calc] Confrontare due file

Postdi Anthony47 » 23/01/11 22:10

Ho risposto sull' altra discussione (viewtopic.php?f=26&t=89636), rileggere 68 messaggi per capire il problema mi sembrava eccessivo.

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

Re: [Excel - Calc] Confrontare due file

Postdi Extrude » 25/01/11 06:47

Flash30005 ha scritto: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


Grazie Anthony, ho letto e risposto (viewtopic.php?f=26&t=89636), ma pensavo che indicarmi sostanzialmente come far verificare alla macro (alle macro) sopra riportate non solo i valori in colonna A ma in piu' colonne (come dichiarava all'ultimo Flash nel post che quoto) fosse piu' semplice ed immediato.....
.... mi sarei io adeguato a fare quelle operazioni manuali (vista la frequenza di verifica - settimanale) a fare quei copia e incolla tra lo stato attuale e quello nuovo....
Non ti nascondo che avrei preferito ricevere input da questo punto di vista e che mi impegnero' a cercare il modo di modificare quanto sopra postato alle mie esigenze (nel limite delle mie conoscenze) vi terro' comunque aggiornati a beneficio di altri utenti
Grazie comunque
Ciao
Extrude
Utente Junior
 
Post: 28
Iscritto il: 19/06/10 07:37

Re: [Excel - Calc] Confrontare due file

Postdi Flash30005 » 25/01/11 14:04

Se devi "controllare" anche altre colonne e verificare che i dati siano uguali
non devi far altro che creare un codice univoco tra i dati1 e dati4 (e dati2 con dati3)
prendo coem esempio il foglio1 e foglio 4
troverai questa riga di codice che controlla se la stringa (codice) nella cella in colonna A del foglio1 è uguale al codice del foglio4

Codice: Seleziona tutto
    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  '<<<< questo è il codice ceh effettua il controllo


a te occorre unire più testi o valori cella in una unica stringa (codice univoco)
quindi dovrai crearti una variabile stringa tipo
Codice: Seleziona tutto
For RA = URA To 2 Step -1 '<<< ciclo For ... next invariato
Dati1 =   Worksheets("Foglio1").Cells(RS, 1).Value & Worksheets("Foglio1").Cells(RS, 2).Value  & Worksheets("Foglio1").Cells(RS, 3).Value '<<<<  colonna A e B e C etc
Dati4 =  Worksheets("Foglio4").Cells(RA, 1).Value &  Worksheets("Foglio4").Cells(RA, 2).Value  &  Worksheets("Foglio4").Cells(RA, 3).Value
        If Dati1 = Dati4 Then Worksheets("Foglio4").Rows(RA & ":" & RA).Delete
'...


Stessa cosa da fare anche per il foglio2 e foglio3 vedi macro origine

Fai sapere se riesci a risolvere altrimenti posta ancora

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 Extrude » 26/01/11 10:20

Perfetto Flash.... era quello che andavo cercando.....
stasera provero' e quanto prima vi faro' sapere....

un ulteriore domanda relativa su come lavora la macro da te creata e':
il controllo che la macro fa' tra il Foglio1 e Foglio2 (ovvero vecchia e nuova versione della lista) e' fatta riga per riga giusto? ovvero verifica i dati contenuti a parita' di riga giusto?
se e' cosi' forse ho un problema.....
.... il fatto e' che la nuova versione (in Foglio2) potrebbe essere integrata con delle righe (di cui non posso conoscere la posizione) che farebbe translare i valori in nuove posizioni (verso il basso ovviamente).... in questo caso che cosa potrei fare?

sostanialmente il controllo che mi serve fare e:
Dati Foglio1 (lista vecchia)
Dati Foglio2 (lista nuova)
Dati Foglio3 (copia Foglio1 con evidenziati i dati cambiati)
Dati Foglio4 (copia Foglio2 con evidenziati i dati cambiati)
quindi:
1) se tra Foglio1 e Foglio2 ci sono differenze nei valori univoci (evidenziare in Giallo il valore cambiato al Foglio4)
2) se tra Foglio1 e Foglio2 ci sono differenze relative a valori (righe) aggiunte (evidenziare in Verde la riga aggiunta al Foglio4)
3) se tra Foglio1 e Foglio2 ci sono differenze relative a valori (righe) eliminate (evidenziare in Rosso la riga eliminata Foglio3)

Spero che sia chiara la mia spiegazione e soprattutto non troppo complicata la soluzione..... ma conoscendo cosa sei in grado di "macroimmaginare...."
PS: io faro comunque quanto nelle mie conoscenze per fare i test necessari e ti faro' sapere laddove trovassi difficolta'
Ciao
Extrude
Utente Junior
 
Post: 28
Iscritto il: 19/06/10 07:37

Re: [Excel - Calc] Confrontare due file

Postdi Flash30005 » 26/01/11 11:59

Nessuno ha detto che le righe si devono trovare nella stessa posizione

fai la tua prova
poi ci risentiamo
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 Extrude » 05/02/11 08:32

Flash30005 ha scritto:Nessuno ha detto che le righe si devono trovare nella stessa posizione

fai la tua prova
poi ci risentiamo
ciao

Ciao a tutti.... scusate il ritardo.... ma ultimamente sono stato molto impegnato....

Allora a fronte dei test che ho fatto, modificando leggermente anche la Macro, ecco i risultati:
Premetto che ho modificato la Macro in modo che sia possibile filtrare le liste originali (visto che non mi servono tutti) e ridurre quindi i tempi di elaborazione della Macro.
1) ho aggiunto due fogli (Actual e New) dove ci sono le complete liste estratte
2) in questi fogli si puo' filtrare i dati che mi interessano (per ridurre la lista)
3) la Macro modificata quindi copia i dati filtrati in Foglio1 e Foglio2 e poi inizia la verifica.
4) ho provato a modificare la Macro in modo che faccia i seguenti controlli (e sto sicuramente sbagliando qualcosa perche' non lavora come dovrebbe o come mi aspettavo)
5) quello che mi servirebbe e' la verifica per i seguenti casi:

A) da Actual a New nuova revisione del disegno (In Actual e' 02 e in New e' 03 o 04 etc....)
B) da Actual a New nuovo disegno (in Actual non esiste e in New si)
C) da Actual a New manca un disegno (in Actual esisteva e in New manca)

per il caso A): in Foglio3 evidenziato in arancione in Foglio4 evidenziato in giallo
per il caso B): in Foglio4 evidenziato in verde in Foglio3 niente
per il caso C): in Foglio3 evidenziato in rosso in Foglio4 niente

La verifica pero' mi evidenzia cose non vere (a parita' di numero di riga) il che mi fa pensare che le discrepanze la rileva solo a parita' di numero righe.

Non posso postare qui il file per ragione di privacy, provo a complilare qualcosa di finto per spiegare e magari invio in PVT il file
Ciao

Questa e' la Macro da me Modificata (magari gia' da qui sarete in grado di capire dove sbaglio)

Codice: Seleziona tutto
Sub ClearF()
    Sheets("Foglio1").Select
    Cells.Select
    Selection.Clear
    Range("A2").Select
    Sheets("Foglio2").Select
    Cells.Select
    Selection.Clear
    Range("A2").Select
    Sheets("Foglio3").Select
    Cells.Select
    Selection.Clear
    Range("A2").Select
    Sheets("Foglio4").Select
    Cells.Select
    Selection.Clear
    Range("A2").Select

Call CopyF1
   
End Sub
Sub CopyF1()
    Range("A1").Select
    Sheets("Actual").Select
    Cells.Select
    Selection.Copy
    Sheets("Foglio1").Select
    Cells.Select
    ActiveSheet.Paste
    Range("A1").Select
    Sheets("New").Select
    Cells.Select
    Selection.Copy
    Sheets("Foglio2").Select
    Cells.Select
    ActiveSheet.Paste
   


Call CopyF

End Sub
Sub CopyF()
   
    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
Sub ConfrontaEColora()
' Foglio1 Copia del Foglio Actual filtrato
' Foglio2 Copia del Foglio New filtrato
' Foglio3 Copia del Foglio 1 con Check da Actual a New Report su Actual
' Foglio4 Copia del Foglio 2 con Check da New a Actual Report su New
Application.ScreenUpdating = False
Application.Calculation = xlManual

Call ClearF

Righe1 = Worksheets("Foglio3").Cells(Rows.Count, 2).End(xlUp).Row
Righe2 = Worksheets("Foglio4").Cells(Rows.Count, 2).End(xlUp).Row

Mt = Mt & "HAI SCELTO DI LANCIARE QUESTA MACRO" & Chr(10)
Mt = Mt & "SEI SICURO DI VOLERLO FARE ????" & Chr(10) & Chr(10)
Mt = Mt & "LA VERIFICA SARA' FATTA SU:" & Chr(10) & Chr(10)
Mt = Mt & (Righe1) & " RIGHE" & " (DA ACTUAL)" & Chr(10)
Mt = Mt & (Righe2) & " RIGHE" & " (DA NEW)" & Chr(10) & Chr(10)
rs = MsgBox(prompt:=Mt, Title:="CHECK REPORT", Buttons:=vbYesNo + vbQuestion)
If rs = vbNo Then Exit Sub

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 = 3
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 = 4
For rs = 2 To URS
    For RA = URA To 2 Step -1
    For CS = 1 To UCA
        Name1 = Worksheets("Foglio1").Cells(rs, 1).Value & Worksheets("Foglio1").Cells(rs, 2).Value    '<<<<  colonne A e B
        Rev1 = Worksheets("Foglio1").Cells(rs, 5).Value    '<<<<  colonna E
        Name4 = Worksheets("Foglio4").Cells(RA, 1).Value & Worksheets("Foglio4").Cells(RA, 2).Value    '<<<<  colonne A e B
        Rev4 = Worksheets("Foglio4").Cells(RA, 5).Value    '<<<<  colonna E
            If Name1 = Name4 And Rev1 < Rev4 Then Worksheets("Foglio4").Cells(RA, CS).Interior.ColorIndex = 6
            If Name1 = Name4 And Rev1 = Rev4 Then Worksheets("Foglio4").Cells(RA, CS).Interior.ColorIndex = 0
    Next CS
    Next RA
Next rs
For RA = 2 To URA
    For rs = URS To 2 Step -1
    For CS = 1 To UCA
        Name2 = Worksheets("Foglio2").Cells(RA, 1).Value & Worksheets("Foglio2").Cells(RA, 2).Value    '<<<<  colonne A e B
        Rev2 = Worksheets("Foglio2").Cells(RA, 5).Value    '<<<<  colonna E
        Name3 = Worksheets("Foglio3").Cells(rs, 1).Value & Worksheets("Foglio3").Cells(rs, 2).Value    '<<<<  colonne A e B
        Rev3 = Worksheets("Foglio3").Cells(rs, 5).Value    '<<<<  colonna E
            If Name2 = Name3 And Rev2 > Rev3 Then Worksheets("Foglio3").Cells(RA, CS).Interior.ColorIndex = 44
            If Name2 = Name3 And Rev2 = Rev3 Then Worksheets("Foglio3").Cells(RA, CS).Interior.ColorIndex = 0
    Next CS
    Next rs
Next RA
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
Extrude
Utente Junior
 
Post: 28
Iscritto il: 19/06/10 07:37

Re: [Excel - Calc] Confrontare due file

Postdi Flash30005 » 11/02/11 00:56

A volte (molto spesso) le macro utilizzate per un determinato scopo non sono efficienti nella stessa maniera se le specifiche cambiano
pertanto, consiglio sempre, di utilizzare la macro per l'esigenza iniziale e capirne il funzionamento (fase apprendimento) e in caso di utilizzo per altri scopi (esigenze diverse) sfruttare solo il principio (assimilato dalla fase apprendimento) per ricostruire una macro ex-novo.

Il quesito qui esposto è stato risolto con una macro più "snella" e con tempo di esecuzione notevolmente inferiore
(circa 1/10 del tempo iniziale).

Codice: Seleziona tutto
Sub ConfrontaEColora()
' Foglio1 Copia del Foglio Actual filtrato
' Foglio2 Copia del Foglio New filtrato
' Foglio3 Copia del Foglio 1 con Check da Actual a New Report su Actual
' Foglio4 Copia del Foglio 2 con Check da New a Actual Report su New
Application.ScreenUpdating = False
Application.Calculation = xlManual

Call ClearF

Righe1 = Worksheets("Foglio3").Cells(Rows.Count, 2).End(xlUp).Row
Righe2 = Worksheets("Foglio4").Cells(Rows.Count, 2).End(xlUp).Row
Mt = ""
Mt = Mt & "HAI SCELTO DI LANCIARE QUESTA MACRO" & Chr(10)
Mt = Mt & "SEI SICURO DI VOLERLO FARE ????" & Chr(10) & Chr(10)
Mt = Mt & "LA VERIFICA SARA' FATTA SU:" & Chr(10) & Chr(10)
Mt = Mt & (Righe1) & " RIGHE" & " (DA ACTUAL)" & Chr(10)
Mt = Mt & (Righe2) & " RIGHE" & " (DA NEW)" & Chr(10) & Chr(10)
RS = MsgBox(prompt:=Mt, Title:="CHECK REPORT", Buttons:=vbYesNo + vbQuestion)
If RS = vbNo Then Exit Sub

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 = 3
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 = 4
For RS = 2 To URS
Min = 0
Ugu = 0
        Name1 = Worksheets("Foglio1").Cells(RS, 1).Value & Worksheets("Foglio1").Cells(RS, 2).Value    '<<<<  colonne A e B
        Rev1 = Val(Worksheets("Foglio1").Cells(RS, 5))    '<<<<  colonna E

    For RA = 2 To URA
    'For CS = 1 To UCA
        Name4 = Worksheets("Foglio4").Cells(RA, 1).Value & Worksheets("Foglio4").Cells(RA, 2).Value    '<<<<  colonne A e B
        Rev4 = Val(Worksheets("Foglio4").Cells(RA, 5))    '<<<<  colonna E
            If Name1 = Name4 And Rev1 < Rev4 Then
            Min = 1
            GoTo SaltaRS
            End If
            If Name1 = Name4 And Rev1 = Rev4 Then
            Ugu = 1
            GoTo SaltaRS
            End If
   ' Next CS
    Next RA
SaltaRS:
    If Min = 1 Then
    Worksheets("Foglio4").Select
    Worksheets("Foglio4").Range(Cells(RA, 1), Cells(RA, UCA)).Interior.ColorIndex = 6
    Worksheets("Foglio3").Select
    Worksheets("Foglio3").Range(Cells(RS, 1), Cells(RS, UCA)).Interior.ColorIndex = 44
    End If
    If Ugu = 1 Then
    Worksheets("Foglio4").Select
    Worksheets("Foglio4").Range(Cells(RA, 1), Cells(RA, UCA)).Interior.ColorIndex = xlNone
    Worksheets("Foglio3").Select
    Worksheets("Foglio3").Range(Cells(RS, 1), Cells(RS, UCA)).Interior.ColorIndex = xlNone
    End If
Next RS

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub


@Extrude
se ci sono problemi posta ancora
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 Extrude » 11/02/11 04:05

Concordo pienamente con quanto da te detto ringraziandoti per quanto consigliato/insegnato.

Non mancherò di postare laddove dovesse servire.

Memore del tuo consiglio, nel caso dovesse servire, aprirò un nuovo post dedicato

Saluti a tutti
;)
Extrude
Utente Junior
 
Post: 28
Iscritto il: 19/06/10 07:37

Re: [Excel - Calc] Confrontare due file

Postdi POLESE » 08/11/12 15:47

Buongiorno, sono nuovo del forum e mi devo subito complimentare, i vari post mi sono stati utilissimi.
Premetto di non essere un esperto di Excel, ed è per questo che chiedo aiuto, al fine di risolvere questo mio problema.
Ho 2 file copiati su un unico file chiamato pippo (il primo vecchio(copiato sul foglio1 di 4) ed il secondo nuovo (copiato sul foglio2 di 4))in excell 2007, che vorrei confrontare per estrapolare i dati non presenti nel foglio1, ho letto tutte le discussioni in merito, ed utilizzando i post con le macro spiegate, le ho utilizzate e ho riscontrato questo:

Premetto che i file sono costituiti da 7 colonne (cognome e nome,indirizzo,n.civico,scala,piano,interno,località) e le righe sono circa 63.000, avendo la necessità che il controllo sia univoco ho provato ad usare quanto letto nella parte finale della discussione ma senza risultato.
Problema riscontrato:
1) se aggiungo un cognome e nome nel file pippo (già esistente) sul foglio2, che dovrebbe essere evidenziato (in giallo) nel foglio4, ciò non avviene. Viceversa se il cognome e nome è diverso o si modifica un dato nella cella (foglio2) questo avviene.
Dove sbaglio
Grazie
Polese
POLESE
Newbie
 
Post: 7
Iscritto il: 07/11/12 16:51

Re: [Excel - Calc] Confrontare due file

Postdi Flash30005 » 08/11/12 21:50

Ciao Polese e benvenuto nel Forum

Ho ripreso in esame il file con la macro che feci per Extrude e funziona regolarmente
ora mi viene un dubbio:
che tu abbia altre esigenze e non riesco a capire dove incontri il problema

Ti chiedo di postare il file con dati sensibili modificati (sono sufficienti poche righe)
e specificassi con un esempio "sul campo" cosa vorresti ottenere o cosa non ti torna

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 POLESE » 13/11/12 17:49

Gentilissimo Flash 3005, grazie per il benvenuto nel Forum e scusa per il ritardo.
La macro in questione che non gira è l'ultima che hai postato a Extrude, mentre la penultima, Controlla e colora quella si.
Ho capito che in quella tua non avviene un controllo delle varie celle adiacenti in maniera da avere un dato finale univoco, ho visto anche i post succesivi relativi a questa possibilità, ma non sono riuscito a capire dove inserirli.
Comunque ora il controllo avviene tra il foglio 1(dato nuovo) e 2( dato vecchio) dello stesso file e si generano nei rispettivi foglio 3 (differenze scritte in foglio 1 non presenti in foglio 2) foglio 4 (differenze scritte in foglio 2 non presenti in foglio 1)il tutto in evidenza gialla, (ottimo per evidenziare differenze)
Inoltre chiedo di essere aiutato a barrare come in altro tuo post quelli che sono effettivamente presenti sia sul foglio 1 che sul foglio 2.
Questa è la macro che uso:
Codice: Seleziona tutto
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
Sub ConfrontaEColora()
' Foglio1 Elenco Utenti Infrataras
' Foglio2 Elenco Utenti Enel gas
' Foglio3 Utenti  che non sono più nel Elenco Utenti Enel gas
' Foglio4 Nuovi Utenti (non erano nel Elenco Utenti Infrataras)
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
    For CS = 1 To UCA
        If Worksheets("Foglio1").Cells(RS, CS).Value = Worksheets("Foglio4").Cells(RA, CS).Value Then Worksheets("Foglio4").Cells(RA, CS).Interior.ColorIndex = 0
    Next CS
    Next RA
Next RS
For RA = 2 To URA
    For RS = URS To 2 Step -1
    For CS = 1 To UCA
        If Worksheets("Foglio2").Cells(RA, CS).Value = Worksheets("Foglio3").Cells(RS, CS).Value Then Worksheets("Foglio3").Cells(RA, CS).Interior.ColorIndex = 0
    Next CS
    Next RS
Next RA
End Sub
Ho aggiunto in colonna A la seguente =SE(VAL.ERRORE(CERCA.VERT(IlPartNumber-di-Foglio2;laColonnaColPartNumber-di-Foglio1;1;0));1;0) che mi restituisce sempre e comunque il valore "1" anche se i dati sono diversi.
Dovendo filtrare i dati in foglio 4 avrei bisogno di una mano.
Grazie e scusa ancora per il ritardo
POLESE
Newbie
 
Post: 7
Iscritto il: 07/11/12 16:51

Re: [Excel - Calc] Confrontare due file

Postdi POLESE » 13/11/12 18:12

Scusa ho dimenticato di dirti che in colonna A foglio 2 ho inserito =SE(VAL.ERRORE(CERCA.VERT(IlPartNumber-di-Foglio2;laColonnaColPartNumber-di-Foglio1;1;0));1;0).
Inoltre il post di Apprendista IT indicava questo che restituisce in foglio 4 le diciture rimasto nuovo ecc.
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;"")
ho provato ma senza risultato.
Grazie :D
POLESE
Newbie
 
Post: 7
Iscritto il: 07/11/12 16:51

Re: [Excel - Calc] Confrontare due file

Postdi POLESE » 15/11/12 10:48

Carissimo Flash3005 vedi gentilmente il mio file, con dati di fantasia, e gentilmente dammi una dritta.
https://rapidshare.com/files/2289722007 ... 0BASE.xlsm
Dove sono evidenziate delle strane anomalie?????
Ti riassumo le mie necessità:
nel Foglio 1 i dati della società;
nel Foglio 2 i dati dell'Enel gas;
Entrambi i Fogli sono con:
diverse colonne (cognome e nome, indirizzo, n. civico ecc.)
63.000 righe di nominativi e dati.
La mia necessità è avere un dato finale dove il Foglio 4 abbia l'elenco dei dati univoci che esistono in entrambi i Fogli 1 e 2 con dicitura es. OK.
I dati inseriti solo in Foglio 2 evidenziati in qualche maniera
I dati inseriti solo in Foglio 1 evidenziati in maniera diversa dalla precedente.
Il tutto filtrabile a seconda dei casi e delle necessità.
Il Foglio 1 (quello della società) avrà in più un ulteriore colonna con Cognome e nome " da controllare nel caso in cui i primi due cognomi del Foglio 1 e 2 non siano identici".....aiuto.
Spero vivamente di essere riuscito a spiegarmi.
Grazie per la gentilezza, disponibilità e pazienza.
POLESE
Newbie
 
Post: 7
Iscritto il: 07/11/12 16:51

Re: [Excel - Calc] Confrontare due file

Postdi POLESE » 19/11/12 13:00

Gentilissimo Flash 30005
Scusami innanzi tutto per aver errato il tuo pseudonimo, hai avuto modo di vedere il mio file? Hai delle dritte? Ho fatto ulteriori prove ma niente da fare, proprio non riesco ad utilizzare il file di extrude si blocca sempre.
Grazie per il tuo contributo essenziale :D
POLESE
Newbie
 
Post: 7
Iscritto il: 07/11/12 16:51

Re: [Excel - Calc] Confrontare due file

Postdi Flash30005 » 19/11/12 15:40

Credo che avendo specifiche diverse non ottenevi gli stessi risultati
prova con questa macro
Codice: Seleziona tutto
Sub ConfrontaEColora()
Set Ws1 = Worksheets("Foglio1") 'Elenco Utenti Infrataras
Set Ws2 = Worksheets("Foglio2") 'Elenco Utenti Enel gas
Set Ws3 = Worksheets("Foglio3") 'Utenti  che non sono più nel Elenco Utenti Enel gas
Set Ws4 = Worksheets("Foglio4") 'Nuovi Utenti (non erano nel Elenco Utenti Infrataras)
Ws3.Cells.Clear
Ws4.Cells.Clear
Ws1.Cells.Copy Destination:=Ws3.Cells
Ws2.Cells.Copy Destination:=Ws4.Cells
URS = Ws1.Range("A" & Rows.Count).End(xlUp).Row   '<<<< alias Foglio3
UCS = Ws1.Range("IV1").End(xlToLeft).Column
Ws3.Select
    Ws3.Range(Cells(2, 1), Cells(URS, UCS)).Interior.ColorIndex = 44
URA = Ws2.Range("A" & Rows.Count).End(xlUp).Row  '<<< alias Foglio4
Set Ws4 = Ws4
Ws4.Select
UCA = Ws2.Range("IV1").End(xlToLeft).Column
    Ws4.Range(Ws4.Cells(2, 1), Ws4.Cells(URA, UCA)).Interior.ColorIndex = 6
For RS = 2 To URS
    StrRS = ""
    UCA = Ws1.Range("IV" & RS).End(xlToLeft).Column
    For CS = 1 To UCA
        StrRS = StrRS & Ws1.Cells(RS, CS).Value
    Next CS
    For RA = 2 To URA
        StrRA = ""
        For CS = 1 To UCA
            StrRA = StrRA & Ws4.Cells(RA, CS).Value
        Next CS
        If StrRS = StrRA Then
            Ws4.Range(Ws4.Cells(RA, 1), Ws4.Cells(RA, 7)).Interior.ColorIndex = 0
        End If
    Next RA
Next RS

For RA = 2 To URA
    StrRA = ""
    UCA = Ws2.Range("IV" & RA).End(xlToLeft).Column
    For CS = 1 To UCA
        StrRA = StrRA & Ws2.Cells(RA, CS).Value
    Next CS
    For RS = 2 To URS
        StrRS = ""
        For CS = 1 To UCA
            StrRS = StrRS & Ws3.Cells(RS, CS).Value
        Next CS
        If StrRS = StrRA Then
            Ws3.Range(Ws3.Cells(RS, 1), Ws3.Cells(RS, 7)).Interior.ColorIndex = 0
        End If
    Next RS
Next RA
End Sub


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-

PrecedenteProssimo

Torna a Applicazioni Office Windows


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


Chi c’è in linea

Visitano il forum: Marius44 e 49 ospiti