Condividi:        

confrontare 2 serie di dati

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

confrontare 2 serie di dati

Postdi mazingaa80 » 22/07/11 18:44

Ciao a tutti ragazzi! vorrei chiedervi un aiuto su un problema che mi è sorto di recente. Ho una tabella in excel che dalle celle A1- J1000 ho una serie di numeri e un'altra tabella che dalle celle L1- U1000 ho un'altra serie di numeri. Alcune righe della prima tabella risultano essere inserite anche nella seconda e quindi vorrei che una funzione/macro mi cerchi le righe che si ripetono tra le due tabelle e che le cancelli automaticamente.
Grazie a tutti coloro che vorranno aiutarmi!
mazingaa80
Newbie
 
Post: 7
Iscritto il: 04/10/10 19:06

Sponsor
 

Re: confrontare 2 serie di dati

Postdi Flash30005 » 22/07/11 22:33

Come te la cavi con il VBA?
se benino
leggi questa discussione
e fai le correzioni consigliate da Anyhony in quest'altra
sapendo che nella prima discussione si dovevano copiare dei dati mentre tu devi eliminare la/le righe

Se è sufficiente questo input procedi pure 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: confrontare 2 serie di dati

Postdi mazingaa80 » 25/07/11 21:35

ciao Flash! non me la cavo bene con il vba..sto provando a copiare e a modificare il codice della macro che mi hai linkato ma finora non sto ottenendo i risultati sperati!..cmq non mi arrendo!! ci provo e riprovo ancora!
mazingaa80
Newbie
 
Post: 7
Iscritto il: 04/10/10 19:06

Re: confrontare 2 serie di dati

Postdi ando.jessica » 07/08/11 14:11

ciao! interesserebbe anche a me la soluzione..devo solo copiare i codici della macro che avete linkato, nel mio file? :oops:
ando.jessica
Newbie
 
Post: 5
Iscritto il: 03/08/11 20:47

Re: confrontare 2 serie di dati

Postdi Flash30005 » 07/08/11 18:02

Ciao Ando.Jessica e benvenuta nel Forum

in un certo senso è copiare i codici ma dopo adattarli alla struttura dei tuoi dati
in caso di necessità posta ancora, magari inviando il file
e spiegando cosa vorresti ottenere

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: confrontare 2 serie di dati

Postdi ando.jessica » 02/09/11 23:01

Bè ho due tabelle che hanno molti numeri in comune. Le ho inserite una nel Foglio1 e l'altra nel Foglio2.
I numeri in entrambe le tabelle vanno dalla colonna A:T. Così come a mazinga mi piacerebbe una macro che trovi le righe in comune tra le due tabelle e che me le elimini! Ho provato a modificare i codici vba e ad adattarli al mio caso ma non me ne intendo affatto di vba..

Sub Macro2()

Application.ScreenUpdating = False
Application.Calculation = xlManual

Dim Ws1, Ws4 As Worksheet
Set Ws1 = Worksheets("tutte le 4-6 possibili + uscite")
Set Ws4 = Worksheets("Foglio3")

UR1 = Ws1.Range("A" & Rows.Count).End(xlUp).Row

Ws1.Select
For RR1 = 3 To UR1
RR4 = Application.WorksheetFunction.Match(Ws1.Range("AG" & RR1), Ws4.Columns("A:A"), 0)
On Error GoTo SaltaRR1
Ws1.Range("V" & RR1) = Ws4.Range("V" & RR4).Value
SaltaRR1:
Next RR1

End Sub

..che ne dici? ho fatto un pasticcio vero? :oops:
ando.jessica
Newbie
 
Post: 5
Iscritto il: 03/08/11 20:47

Re: confrontare 2 serie di dati

Postdi Flash30005 » 03/09/11 11:26

La funzione Application.WorksheetFunction.Match
confronta un valore rispetto a un range di valori
nel tuo caso, avendo una serie di valori che compongono la riga dalla colonna A alla T
penso debba creare un valore univoco unendo le celle da A a T
Codice: Seleziona tutto
For RR1 = UR1 To 1
CodUni1 = ""
For CC1 = 1 to 20
CodUni1 = CodUni1 & Worksheets("Foglio1").Cells(RR1,CC1).value
Next CC1

For RR2 = UR2 to 1
CodUni2 = ""
For CC2 = 1 to 20
CodUni2 = CodUni2 & Worksheets("Foglio2").Cells(RR2,CC2).value
Next CC2
If CodUni1 = CodUni2 then     
Worksheets("Foglio2").Rows(RR2 &":" & RR2).Delete Shift:=xlUp
Worksheets("Foglio1").Rows(RR1 &":" & RR1).Delete Shift:=xlUp
Goto saltaRR1
endif
next RR2
saltaRR1:
next RR1

Devi però fare attenzione se ci sono numeri a due o più cifre
In questo caso nella creazione del codice univoco dovrai tenere presente la formattazione da utilizzare
a due, tre o quattro cifre

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: confrontare 2 serie di dati

Postdi ando.jessica » 04/09/11 01:32

Grazie Flash.. purtroppo mi da un messaggio di errore runtime '1004'.. immagino che il problema sia che ho anche numeri a due cifre! :(
devo modificare il codice vba?! aiuto... :roll:
ando.jessica
Newbie
 
Post: 5
Iscritto il: 03/08/11 20:47

Re: confrontare 2 serie di dati

Postdi Anthony47 » 05/09/11 00:47

Puoi precisare su quale riga ottieni l' errore? (al messaggio premi Debug, poi segnala quale istruzione e' evidenziata).

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

Re: confrontare 2 serie di dati

Postdi Flash30005 » 05/09/11 07:48

Leggi il post di Anthony e indica la riga evidenziata

nel frattempo correggo due righe errate della macro (i cicli for next )
For RR1 = UR1 To 1 step - 1
...
...
...
For RR2 = UR2 To 1 Step - 1
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: confrontare 2 serie di dati

Postdi ando.jessica » 05/09/11 18:52

Quando mi da errore mi evidenzia questa stringa:
CodUni1 = CodUni1 & Worksheets("Foglio1").Cells(RR1, CC1).Value

Grazie ragazzi!!
ando.jessica
Newbie
 
Post: 5
Iscritto il: 03/08/11 20:47

Re: confrontare 2 serie di dati

Postdi Flash30005 » 05/09/11 22:58

Beh certo, che succede quel fatto
La macro da me scritta direttamente nel post prevedeva un minimo di lettura da parte dell'utente
di qualche post del nostro Forum
dove il codice UR (calcolo ultima riga di un foglio), è riportato quasi sempre ed è utilizzato spesso.
Per evitare ulteriori "incomprensioni" pubblico la macro integrale e funzionante
Codice: Seleziona tutto
Sub TrovaRigheUguali()
UR1 = Worksheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row  '<<<< riga codice che mancava (calcolo righe foglio)
UR2 = Worksheets("Foglio2").Range("A" & Rows.Count).End(xlUp).Row  '<<<< riga codice che mancava (calcolo righe foglio)

For RR1 = UR1 To 1 Step -1
CodUni1 = ""
For CC1 = 1 To 20
CodUni1 = CodUni1 & Worksheets("Foglio1").Cells(RR1, CC1).Value
Next CC1

For RR2 = UR2 To 1 Step -1
CodUni2 = ""
For CC2 = 1 To 20
CodUni2 = CodUni2 & Worksheets("Foglio2").Cells(RR2, CC2).Value
Next CC2
If CodUni1 = CodUni2 Then
Worksheets("Foglio2").Rows(RR2 & ":" & RR2).Delete Shift:=xlUp
Worksheets("Foglio1").Rows(RR1 & ":" & RR1).Delete Shift:=xlUp
GoTo saltaRR1
End If
Next RR2
saltaRR1:
Next RR1
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-

Re: confrontare 2 serie di dati

Postdi ando.jessica » 06/09/11 18:58

l'ho letti i post del forum ma non sapevo che UR volesse dire Ultima Riga!!..pensavo facesse parte del codice VBA!
sorry! e grazie per la gentilezza
ando.jessica
Newbie
 
Post: 5
Iscritto il: 03/08/11 20:47

Re: confrontare 2 serie di dati

Postdi Flash30005 » 06/09/11 19:37

Rileggendo un tuo post nel quale dici che hai numeri a due cifre
pertanto è opportuno formattare ogni numero a due cifre in maniera che le unità (1, 2, 3, ...9) vengano inglobati come 01, 02, 03, ... 09 per evitare casi sporadici di codici simili pur non essendolo (es.: 1, 21 e 12, 1 in codice univoco fanno 121 entrambi e se il resto della riga è uguale vengono eliminati quando non dovrebbero esserlo)
replico la macro modificata
Codice: Seleziona tutto
Sub TrovaRigheUguali()
UR1 = Worksheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row
For RR1 = UR1 To 1 Step -1
CodUni1 = ""
For CC1 = 1 To 20
CodUni1 = CodUni1 & Format(Worksheets("Foglio1").Cells(RR1, CC1).Value, "00")
Next CC1

UR2 = Worksheets("Foglio2").Range("A" & Rows.Count).End(xlUp).Row
For RR2 = UR2 To 1 Step -1
CodUni2 = ""
For CC2 = 1 To 20
CodUni2 = CodUni2 & Format(Worksheets("Foglio2").Cells(RR2, CC2).Value, "00")
Next CC2
If CodUni1 = CodUni2 Then
Worksheets("Foglio2").Rows(RR2 & ":" & RR2).Delete Shift:=xlUp
Worksheets("Foglio1").Rows(RR1 & ":" & RR1).Delete Shift:=xlUp
GoTo saltaRR1
End If
Next RR2
saltaRR1:
Next RR1
End Sub


Ciao

P.s. UR è una variabile ma si può usare qualsiasi stringa come ad esempio
Codice: Seleziona tutto
Jessica = Worksheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row

perché la seconda parte è la funzione di conteggio righe
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-


Torna a Applicazioni Office Windows


Topic correlati a "confrontare 2 serie di dati":


Chi c’è in linea

Visitano il forum: Gianca532011 e 57 ospiti