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 » 27/10/09 13:48

Diciamo che la macro fa oltre quello di cui io ho bisogno.
Il foglio tre in realtà potrebbe non servirmi, mi bastano i risultati visibili al foglio 4.
Dici che modificando la macro in tal senso abbiamo prestazioni migliori ?
antonio.caci
Utente Junior
 
Post: 16
Iscritto il: 26/10/09 14:46

Sponsor
 

Re: [Excel - Calc] Confrontare due file

Postdi Flash30005 » 27/10/09 14:07

Beh, sicuramente è più veloce,
non posso dire che dimezzi i tempi perché dipende dai dati che sono nei due fogli (3 e 4)
quindi sostituisci le due macro (CopiaF e ConfrontaEColora) con queste due:
Codice: Seleziona tutto
Sub CopiaF()
    Sheets("Foglio4").Select
    Cells.Select
    Selection.Clear
    Range("A1").Select
    Sheets("Foglio2").Select
    Cells.Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Foglio4").Select
    Range("A1").Select
    ActiveSheet.Paste
    Range("A1").Select
End Sub

Sub ConfrontaEColora()
Application.ScreenUpdating = False
Application.Calculation = xlManual
' Foglio1 Vecchio Catalogo
' Foglio2 Nuovo Catalogo
' Foglio4 Nuovi prodotti (non erano nel vecchio catalogo)
Call CopiaF
URS = Worksheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row
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 = xlNone
    Next CS
    Next RA
Next RS
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub


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 antonio.caci » 27/10/09 14:32

Tutto ok !
direi che è più veloce sicuramente e ottiene eproprio lo scopo da me voluto.
:D
antonio.caci
Utente Junior
 
Post: 16
Iscritto il: 26/10/09 14:46

Re: [Excel - Calc] Confrontare due file

Postdi paride79 » 02/11/09 13:30

Salve, sono neoiscritto.
Approfitto di questo post perchè la mia esigenza è molto simile.
Probabilmente una piccola modifica alla macro risolve il mio problema.

Foglio1 -> colonna 1 "ARTICOLO" -> colonna 2 "QUANTITA"
Foglio2 -> colonna 1 "ARTICOLO" -> colonna 2 "QUANTITA".

Fin qui niente di nuovo, il problema nasce quando per es:
foglio 1 ->Riga1 = ARTICOLO= pinco, QUANTITA= 10; Riga2 = ARTICOLO = pinco, QUANTITA = 5
foglio 2 ->Riga1 = ARTICOLO= pinco, QUANTITA= 15;
In questo caso per me tra i 2 fogli l'articolo pinco è uguale e non va segnalato...

In pratica mi servirebbe prima un raggruppamento per articoli con somma parziale delle quantità e poi un confronto scrivendo nel foglio 3 solo le incongruenze.

Bella sfida!

Spero di essere stato chiaro.

Grazie in anticipo
paride79
Utente Junior
 
Post: 10
Iscritto il: 02/11/09 13:22

Re: [Excel - Calc] Confrontare due file

Postdi Flash30005 » 02/11/09 22:50

Ciao Paride e Benvenuto

Hai specificato la riga ma le colonne?
Articolo è sulla colonna A e Quantità è sulla colonna B?
Se così,
ti occorrono solo questi dati oppure altre celle della riga?
se ti occorrono altre celle della riga del foglio1 (tipo Descrizione estesa) sono identiche e già riportate nel foglio2?
Perché non fai uno screenshot dei due fogli o invii direttamente il file (con articoli o altri dati inventati...)?

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 paride79 » 02/11/09 23:20

Articolo è sulla A e Quantita è sulla B.
Tutto il resto è vuoto.

Per ogni articolo del foglio 1 bisogna fare una somma delle quantità.
Lo stesso per il foglio 2.
Nel foglio 3 e 4 andiamo a scrivere gli articoli e le quantità differenti tra i 2 fogli.

Esempio:
foglio 1: articolo pinco, quantita 5, articolo pinco, quantita 10
foglio 2: articolo pinco, quantita 15
NON LO SCRIVO NEL FOGLIO 3 e 4

foglio 1: articolo pinco, quantita 5, articolo pinco, quantita 10
foglio 2: articolo pinco, quantita 10
NEL FOGLIO 3 SCRIVO PINCO 15
NEL FOGLIO 4 SCRIVO PINCO 10


Immagine
paride79
Utente Junior
 
Post: 10
Iscritto il: 02/11/09 13:22

Re: [Excel - Calc] Confrontare due file

Postdi Anthony47 » 03/11/09 00:30

Io produrrei prima una tabella pivot per ogni foglio, calcolando i totali per articolo, e poi evidenzierei le voci che non hanno totali uguali.

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

Re: [Excel - Calc] Confrontare due file

Postdi paride79 » 03/11/09 08:52

più nello specifico?

Grazie cmq.
paride79
Utente Junior
 
Post: 10
Iscritto il: 02/11/09 13:22

Re: [Excel - Calc] Confrontare due file

Postdi Anthony47 » 03/11/09 13:20

Selezioni col A e Col B di Foglio1; Menu /Dati /Rapprto tabella pivot; Avanti, Avanti; premi Layout; trascini l' etichetta Articoli (l' intestazione di col A) nell' area Riga, l' etichetta Quantita' nell' area Dati; controlli che ti visualizzi "Somma di.. Quantità", se NO (es Conta di ..) fai doppio click su cosa ti visualizza, scegli "Somma di" nell' elenco, Ok; chiudi con Ok, Ok.
Ripeti su foglio2, ma invece di creare la tabella su un nuovo foglio di lavoro scegli (step 3 di 3) Foglio di lavoro esistente e scegli una posizione accanto alla tabella gia' creata.

Le due tabelle riepilogheranno cosa c' e' su Foglio1 e cosa su Foglio2; su questi dati applichi il metodo che preferisci per fare le cose che devi.

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

Re: [Excel - Calc] Confrontare due file

Postdi Flash30005 » 04/11/09 09:17

Oppure...
se vuoi utilizzare delle macro, puoi usare questo codice
Codice: Seleziona tutto
Sub Confronta()
NF = 2
For F = 1 To NF
URS = Worksheets("Foglio" & F).Range("A" & Rows.Count).End(xlUp).Row
i = 2
For RS = 2 To URS
    Cod1S = Worksheets("Foglio" & F).Cells(RS, 1).Value
    For RS2 = 2 To i
        Cod2s = Worksheets("Foglio" & F).Cells(RS2, 10).Value
        If Cod1S = Cod2s Then GoTo esci
    Next RS2
        Worksheets("Foglio" & F).Cells(i, 10).Value = Cod1S
        i = i + 1
esci:
Next RS
URE = Worksheets("Foglio" & F).Range("J" & Rows.Count).End(xlUp).Row
    For RV = 2 To URE
        Cod1A = Worksheets("Foglio" & F).Cells(RV, 10).Value
        For RS = 2 To URS
            Cod1S = Worksheets("Foglio" & F).Cells(RS, 1).Value
            If Cod1A = Cod1S Then Worksheets("Foglio" & F).Cells(RV, 11).Value = Worksheets("Foglio" & F).Cells(RV, 11).Value + Worksheets("Foglio" & F).Cells(RS, 2).Value
            Next RS
    Next RV
Next F
Call compila3e4
End Sub
Sub compila3e4()
UR1 = Worksheets("Foglio1").Range("J" & Rows.Count).End(xlUp).Row
UR2 = Worksheets("Foglio2").Range("J" & Rows.Count).End(xlUp).Row
 i = 2
 For RC1 = 2 To UR1
    Cod1 = Worksheets("Foglio1").Range("J" & RC1).Value
    Val1 = Worksheets("Foglio1").Range("K" & RC1).Value
    For RC2 = 2 To UR2
        Cod2 = Worksheets("Foglio2").Range("J" & RC2).Value
        If Cod1 <> Cod2 Then GoTo esci
        Val2 = Worksheets("Foglio2").Range("K" & RC2).Value
        If Val1 = Val2 Then GoTo esci
        Worksheets("Foglio1").Range("J" & RC1 & ":K" & RC1).Copy Destination:=Worksheets("Foglio3").Range("A" & i & ":B" & i)
        Worksheets("Foglio2").Range("J" & RC2 & ":K" & RC2).Copy Destination:=Worksheets("Foglio4").Range("A" & i & ":B" & i)
        i = i + 1
esci:
    Next RC2
 Next RC1
Worksheets("Foglio1").Range("A1:B1").Copy Destination:=Worksheets("Foglio3").Range("A1:B1")
Worksheets("Foglio2").Range("A1:B1").Copy Destination:=Worksheets("Foglio4").Range("A1:B1")
    Sheets("Foglio1").Select
    Columns("J:K").ClearContents
    Range("A1").Select
    Sheets("Foglio2").Select
    Columns("J:K").ClearContents
    Range("A1").Select
    Sheets("Foglio4").Select
End Sub

I fogli dovranno essere denominati Foglio1, Foglio2, Foglio3 e Foglio4
Nel mio esempio utilizzo momentaneamente le colonne J e K dei fogli 1 e 2 quindi non dovranno preesistere dei dati perché verranno cancellati (si può modificare la macro per utilizzare colonne vuote).

Copia l'intero codice inserendolo in un modulo
avvia la macro "Confronta"

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 » 04/11/09 12:22

Ciao Flash, ho capito dove sbagliavo quando eseguivo la macro, praticamente c'erano delle righe nei due cataloghi che davano fastidio alla macro (erano righe superflue dove c'era solo la data e l'indirizo fornitore) eliminate quelle righe la macro ha funzionato perfettamente :D

Ho visto che questo argomento ha suscitato l'interesse di molti, ottimo :D
Ciao
apprendistaIT
Utente Junior
 
Post: 63
Iscritto il: 07/10/09 15:45

Re: [Excel - Calc] Confrontare due file

Postdi paride79 » 04/11/09 17:07

Flash30005 ha scritto:Oppure...
se vuoi utilizzare delle macro, puoi usare questo codice
Codice: Seleziona tutto
Sub Confronta()
NF = 2
For F = 1 To NF
URS = Worksheets("Foglio" & F).Range("A" & Rows.Count).End(xlUp).Row
i = 2
For RS = 2 To URS
    Cod1S = Worksheets("Foglio" & F).Cells(RS, 1).Value
    For RS2 = 2 To i
        Cod2s = Worksheets("Foglio" & F).Cells(RS2, 10).Value
        If Cod1S = Cod2s Then GoTo esci
    Next RS2
        Worksheets("Foglio" & F).Cells(i, 10).Value = Cod1S
        i = i + 1
esci:
Next RS
URE = Worksheets("Foglio" & F).Range("J" & Rows.Count).End(xlUp).Row
    For RV = 2 To URE
        Cod1A = Worksheets("Foglio" & F).Cells(RV, 10).Value
        For RS = 2 To URS
            Cod1S = Worksheets("Foglio" & F).Cells(RS, 1).Value
            If Cod1A = Cod1S Then Worksheets("Foglio" & F).Cells(RV, 11).Value = Worksheets("Foglio" & F).Cells(RV, 11).Value + Worksheets("Foglio" & F).Cells(RS, 2).Value
            Next RS
    Next RV
Next F
Call compila3e4
End Sub
Sub compila3e4()
UR1 = Worksheets("Foglio1").Range("J" & Rows.Count).End(xlUp).Row
UR2 = Worksheets("Foglio2").Range("J" & Rows.Count).End(xlUp).Row
 i = 2
 For RC1 = 2 To UR1
    Cod1 = Worksheets("Foglio1").Range("J" & RC1).Value
    Val1 = Worksheets("Foglio1").Range("K" & RC1).Value
    For RC2 = 2 To UR2
        Cod2 = Worksheets("Foglio2").Range("J" & RC2).Value
        If Cod1 <> Cod2 Then GoTo esci
        Val2 = Worksheets("Foglio2").Range("K" & RC2).Value
        If Val1 = Val2 Then GoTo esci
        Worksheets("Foglio1").Range("J" & RC1 & ":K" & RC1).Copy Destination:=Worksheets("Foglio3").Range("A" & i & ":B" & i)
        Worksheets("Foglio2").Range("J" & RC2 & ":K" & RC2).Copy Destination:=Worksheets("Foglio4").Range("A" & i & ":B" & i)
        i = i + 1
esci:
    Next RC2
 Next RC1
Worksheets("Foglio1").Range("A1:B1").Copy Destination:=Worksheets("Foglio3").Range("A1:B1")
Worksheets("Foglio2").Range("A1:B1").Copy Destination:=Worksheets("Foglio4").Range("A1:B1")
    Sheets("Foglio1").Select
    Columns("J:K").ClearContents
    Range("A1").Select
    Sheets("Foglio2").Select
    Columns("J:K").ClearContents
    Range("A1").Select
    Sheets("Foglio4").Select
End Sub

I fogli dovranno essere denominati Foglio1, Foglio2, Foglio3 e Foglio4
Nel mio esempio utilizzo momentaneamente le colonne J e K dei fogli 1 e 2 quindi non dovranno preesistere dei dati perché verranno cancellati (si può modificare la macro per utilizzare colonne vuote).

Copia l'intero codice inserendolo in un modulo
avvia la macro "Confronta"

Ciao




Con semplici esempi va una meraviglia.
Sui miei 2 file non funziona come dovrebbe.
Se in pvt mi dai un indirizzo te li mando e magari individui subito l'errore.
P.S. Grazie.
paride79
Utente Junior
 
Post: 10
Iscritto il: 02/11/09 13:22

Re: [Excel - Calc] Confrontare due file

Postdi paride79 » 04/11/09 17:35

Chiedo umilmente scusa.
Cannava sulle quantità del foglio 2 perchè in formato diverso da quelle del foglio 1.

Va benissimo.
Grazie mille
paride79
Utente Junior
 
Post: 10
Iscritto il: 02/11/09 13:22

Re: [Excel - Calc] Confrontare due file

Postdi paride79 » 12/11/09 09:04

Ma secondo te come devo fare per risolvere sto problema?
7 volte su 10 non funzione per problemi di formati.
C'è un modo per rendere tutto scorrevole?

Grazie e ciao
paride79
Utente Junior
 
Post: 10
Iscritto il: 02/11/09 13:22

Re: [Excel - Calc] Confrontare due file

Postdi Anthony47 » 12/11/09 21:00

Ma in che cosa differiscono i dati di file1 con quelli di file2?

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

Re: [Excel - Calc] Confrontare due file

Postdi paride79 » 13/11/09 09:38

File1 = Articolo in formato generale e quantità in formato numero.
File2 = Articolo e quantità in formato generale.

Il problema nasce sul file 1, inizialmente mi da errore perkè ci sono dei numeri in una casella di formato testo (l'articolo contiene anche numeri) e una volta ke ho riportato tutto alla stessa forma canna lo stesso.

Sul file 1 cattura l'articolo ma non riesce a catturare le quantità per il confronto.

Se in pvt mi dai un indirizzo di posta elettronica ti mando i 2 file.

Grazie
paride79
Utente Junior
 
Post: 10
Iscritto il: 02/11/09 13:22

Re: [Excel - Calc] Confrontare due file

Postdi Flash30005 » 13/11/09 10:32

Proviamo a "tagliare la testa al toro"

Inserisci nel modulo questa macro
Codice: Seleziona tutto
Sub Converti()
UR1a = Worksheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row
UR2a = Worksheets("Foglio2").Range("A" & Rows.Count).End(xlUp).Row
For CN1 = 2 To UR1a
Worksheets("Foglio1").Range("A" & CN1).Value = Val(Worksheets("Foglio1").Range("A" & CN1).Value)
Next CN1
For CN2 = 2 To UR2a
Worksheets("Foglio2").Range("A" & CN2).Value = Val(Worksheets("Foglio2").Range("A" & CN2).Value)
Next CN2
End Sub

e poi inserisci la chiamata nella macro Confronta in questa maniera:
Codice: Seleziona tutto
Sub Confronta()   '<<<<< nome macro esistente
Call Converti   '<<<<< Riga chiamata da aggiungere qui
NF = 2   '<<<<< riga esistente esistente
For F = 1 To NF   '<<<<< riga esistente
...
...


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 paride79 » 13/11/09 10:53

Da oggi sei ufficialmente il mio mito a tutti gli effetti!
Grazie mille
paride79
Utente Junior
 
Post: 10
Iscritto il: 02/11/09 13:22

Re: [Excel - Calc] Confrontare due file

Postdi Flash30005 » 13/11/09 11:58

Non ho fatto altro che convertire in formato numerico il campo articolo
magari ho anche esagerato in quanto la macro processa sia il foglio1 che il foglio2 (forse non necessario)
ma così "dormi tra due cuscini" ;)

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 antonio.caci » 16/12/09 12:17

Ciao.
Ho visto che si è evoluto il tutto.
Come accennavo qualche tempo fa il file si è ingrandito e sfiora le 400 righe col risultato che purtroppo non mi colora più nel terzo foglio i dati variati.
Utilizzo sia office 2007 che 2003.
Per comodità posto anche le righe di codice che avevi fatto.
ciao Antonio

Sub CopiaF()
Sheets("Foglio4").Select
Cells.Select
Selection.Clear
Range("A1").Select
Sheets("Foglio2").Select
Cells.Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Foglio4").Select
Range("A1").Select
ActiveSheet.Paste
Range("A1").Select
End Sub

Sub ConfrontaEColora()
Application.ScreenUpdating = False
Application.Calculation = xlManual
' Foglio1 Vecchio Catalogo
' Foglio2 Nuovo Catalogo
' Foglio4 Nuovi prodotti (non erano nel vecchio catalogo)
Call CopiaF
URS = Worksheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row
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 = xlNone
Next CS
Next RA
Next RS
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
antonio.caci
Utente Junior
 
Post: 16
Iscritto il: 26/10/09 14:46

PrecedenteProssimo

Torna a Applicazioni Office Windows


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


Chi c’è in linea

Visitano il forum: Nessuno e 105 ospiti