|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jun 2003
Città: Genova [Italy] Trattative: +1.000
Messaggi: 3525
|
Excel: leggi, confronta, esprimi le differenze...
Ciao,
nel titolo ho piu o meno riassunto la funzione che mi servirebbe. problema: due colonne affiancate con dei nomi (composti anche da piu parole). Vorrei costruire una funzione che mi legga i dati di una colonna e dell'altra. Li confronti. E mi evidenzi in ciascuna colonna le differenze (magari con colori differenti). Cioè deve evidenziare nella prima colonna quello che non è contenuto nella seconda. Idem dall'altra parte. Cioè Codice:
COLONNA 1 COLONNA 2 a a b g c c d f e e .... ...... Spero di essere stato chiaro. Riuscite ad aiutarmi? Grazie!
__________________
Raiontech DX2(Clevo P751TM) | i7 8700 delidded (30' prime95@4.1ghz@-100mV@80°C@estate), 64Gb DDR4 2666 G-skill Ripjaws, 15.6" 1920x1080 IPS 144Hz G-Sync, GTX 1060 6gb, M2 960 EVO 512gb NVMe, M2 860 EVO 2Tb, mSata 860 EVO 1Tb, 2.5" Sata3 Crucial SSD M500 2Tb, 8 cells 82Wh, ali 230w, Sound Blaster XFI MB5 HiFi Sabre DAC, D3LL U2410 24" MIE TRATTATIVE. Test vari su compress. video e dintorni... |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Mar 2001
Città: PV Milano Nord
Messaggi: 3851
|
prova ad usare questa macro
Codice:
Sub Differenze() Dim col_a As Integer Dim col_b As Integer range("a1:a15").Interior.ColorIndex = 3 range("b1:b15").Interior.ColorIndex = 4 For col_a = 1 To 15 For col_b = 1 To 15 Set curcell_a = Worksheets("Sheet1").Cells(col_a, 1) Set curcell_b = Worksheets("Sheet1").Cells(col_b, 2) If curcell_b.Text = curcell_a.Text Then curcell_b.Interior.ColorIndex = 2 Next col_b Next col_a For col_b = 1 To 15 For col_a = 1 To 15 Set curcell_a = Worksheets("Sheet1").Cells(col_a, 1) Set curcell_b = Worksheets("Sheet1").Cells(col_b, 2) If curcell_a.Text = curcell_b.Text Then curcell_a.Interior.ColorIndex = 2 Next col_a Next col_b End Sub
__________________
"W la foca, che dio la benedoca"
poteva risolvere tutto la sinistra negli anni in cui ha governato e non l'ha fatto. O sono incapaci o sta bene anche a "loro" cosi. L'una o l'altra inutile scandalizzarsi.[plutus] |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jun 2003
Città: Genova [Italy] Trattative: +1.000
Messaggi: 3525
|
ciao!!
grazie della risposta intanto! la sto provando, mi da errore alla riga 9.
__________________
Raiontech DX2(Clevo P751TM) | i7 8700 delidded (30' prime95@4.1ghz@-100mV@80°C@estate), 64Gb DDR4 2666 G-skill Ripjaws, 15.6" 1920x1080 IPS 144Hz G-Sync, GTX 1060 6gb, M2 960 EVO 512gb NVMe, M2 860 EVO 2Tb, mSata 860 EVO 1Tb, 2.5" Sata3 Crucial SSD M500 2Tb, 8 cells 82Wh, ali 230w, Sound Blaster XFI MB5 HiFi Sabre DAC, D3LL U2410 24" MIE TRATTATIVE. Test vari su compress. video e dintorni... |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1092
|
Non ho provato la macro di zuper (che saluto
![]() Codice:
Sub Differenze() Dim cella As Range Dim contaSE As Integer Range("a1:b10").Interior.ColorIndex = xlNone For Each cella In Range("a1:a10") contaSE = Application.WorksheetFunction.CountIf(Range("b1:b10"), cella.Value) If contaSE = 0 Then cella.Interior.ColorIndex = 3 End If Next cella For Each cella In Range("b1:b10") contaSE = Application.WorksheetFunction.CountIf(Range("a1:a10"), cella.Value) If contaSE = 0 Then cella.Interior.ColorIndex = 4 End If Next cella End Sub |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jun 2003
Città: Genova [Italy] Trattative: +1.000
Messaggi: 3525
|
grazie anche a te john!
l'ho provata funziona!! scusate ragazzi ma se volessi imparare un pochino a tradurre ciò che voglio fare in questo linguaggio e farlo come avete fatto voi come posso fare? grazie!!
__________________
Raiontech DX2(Clevo P751TM) | i7 8700 delidded (30' prime95@4.1ghz@-100mV@80°C@estate), 64Gb DDR4 2666 G-skill Ripjaws, 15.6" 1920x1080 IPS 144Hz G-Sync, GTX 1060 6gb, M2 960 EVO 512gb NVMe, M2 860 EVO 2Tb, mSata 860 EVO 1Tb, 2.5" Sata3 Crucial SSD M500 2Tb, 8 cells 82Wh, ali 230w, Sound Blaster XFI MB5 HiFi Sabre DAC, D3LL U2410 24" MIE TRATTATIVE. Test vari su compress. video e dintorni... |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1092
|
IMHO per iniziare la cosa migliore da fare è svolgere normalmente le azioni che fai su excel e tramite il registratore di macro osservare il codice che viene generato. In questo modo impari i nomi dei metodi, delle proprietà, eccetera. Poi se fai una ricerca su google usando come chiave di ricerca "excel vba" trovi materiale a iosa.
Inoltre non puoi fare a meno dell'msdn della microsoft http://msdn.microsoft.com/en-us/library/dd627239.aspx ![]() |
![]() |
![]() |
![]() |
#7 | ||
Senior Member
Iscritto dal: Mar 2001
Città: PV Milano Nord
Messaggi: 3851
|
Quote:
![]() Quote:
![]() come molte volte capita in excel ci sono + soluzioni per molti dei problemi...dipende solo da quella che si pensa prima...e molte volte nn si pensa alla + semplice...come in questo caso il contase ![]()
__________________
"W la foca, che dio la benedoca"
poteva risolvere tutto la sinistra negli anni in cui ha governato e non l'ha fatto. O sono incapaci o sta bene anche a "loro" cosi. L'una o l'altra inutile scandalizzarsi.[plutus] |
||
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Jun 2003
Città: Genova [Italy] Trattative: +1.000
Messaggi: 3525
|
ok zuper, funziona adesso!
però ho un problema ragazzi. la vostra funzione di fatto fa questo: se la a25 è diversa dalla b25 allora lo segnala. in realtà deve verificare se l'esatto contenuto della cella a25 è contenuto nell'altra colonna, a prescindere dal fatto che si trovi o meno in b25. Quindi devo anche poter confrontare una colonna1 lunga che so 100 contro una colonna2 lunga 105... Fatemi sapere, grazie! ![]()
__________________
Raiontech DX2(Clevo P751TM) | i7 8700 delidded (30' prime95@4.1ghz@-100mV@80°C@estate), 64Gb DDR4 2666 G-skill Ripjaws, 15.6" 1920x1080 IPS 144Hz G-Sync, GTX 1060 6gb, M2 960 EVO 512gb NVMe, M2 860 EVO 2Tb, mSata 860 EVO 1Tb, 2.5" Sata3 Crucial SSD M500 2Tb, 8 cells 82Wh, ali 230w, Sound Blaster XFI MB5 HiFi Sabre DAC, D3LL U2410 24" MIE TRATTATIVE. Test vari su compress. video e dintorni... |
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: Mar 2001
Città: PV Milano Nord
Messaggi: 3851
|
Quote:
abbiamo usato come RANGE a1:a10 e b1:b10 con la mia, ma mi pare di vedere anche con la sua, devi solo modificare questo range fino a dove vuoi! ![]() For col_a = 1 To 15 e tutti gli altri chiaramente fino al numero che + ti aggrada ![]() la mia fa un check di ogni singola cella della colonna a con tutte le celle della colonna b e viceversa, quindi indipendentemente dal fatto che a25 sia in b25 e così via. quella di john esegue un banale contase...quindi anche la sua le controlla tutte ![]()
__________________
"W la foca, che dio la benedoca"
poteva risolvere tutto la sinistra negli anni in cui ha governato e non l'ha fatto. O sono incapaci o sta bene anche a "loro" cosi. L'una o l'altra inutile scandalizzarsi.[plutus] Ultima modifica di zuper : 17-06-2009 alle 08:14. |
|
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Mar 2001
Città: PV Milano Nord
Messaggi: 3851
|
Quote:
![]() ![]() stavo provando la tua macro per curiosità e ho visto che fa i check anche sulle celle vuote ![]() ![]() e mi PERMETTO di fare una piccolissima aggiunta ![]() Codice:
Sub Differenze() Dim cella As Range Dim contaSE As Integer Range("a1:b10").Interior.ColorIndex = xlNone For Each cella In Range("a1:a10") If cella.Value <> "" Then contaSE = Application.WorksheetFunction.CountIf(Range("b1:b10"), cella.Value) If contaSE = 0 Then cella.Interior.ColorIndex = 3 End If End If Next cella For Each cella In Range("b1:b10") If cella.Value <> "" Then contaSE = Application.WorksheetFunction.CountIf(Range("a1:a10"), cella.Value) If contaSE = 0 Then cella.Interior.ColorIndex = 4 End If End If Next cella End Sub
__________________
"W la foca, che dio la benedoca"
poteva risolvere tutto la sinistra negli anni in cui ha governato e non l'ha fatto. O sono incapaci o sta bene anche a "loro" cosi. L'una o l'altra inutile scandalizzarsi.[plutus] |
|
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1092
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#12 | |
Member
Iscritto dal: Aug 2008
Messaggi: 178
|
Quote:
- seleziona l'intervallo di colonna 1 da controllare - dalla barra dei menù seleziona Formato>Formattazione condizionale>La formula è - nella casella di testo insersci questa formula adattanto ovviamente i riferimenti alle tue esigenze: Codice:
=CONTA.SE($B$1:$B$7;$A1) tutte le parole di colonna 1 contenute in colonna 2 diventeranno rosse seleziona l'intervallo di colonna 2 che ti interessa e fa lo stesso, ovviamente la formula ora sarà: Codice:
=CONTA.SE($A$1:$A$7;$B1) |
|
![]() |
![]() |
![]() |
#13 | |
Senior Member
Iscritto dal: Mar 2001
Città: PV Milano Nord
Messaggi: 3851
|
Quote:
![]() la provo! ![]()
__________________
"W la foca, che dio la benedoca"
poteva risolvere tutto la sinistra negli anni in cui ha governato e non l'ha fatto. O sono incapaci o sta bene anche a "loro" cosi. L'una o l'altra inutile scandalizzarsi.[plutus] Ultima modifica di zuper : 17-06-2009 alle 20:58. |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:21.