|
|||||||
|
|
|
![]() |
|
|
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' [email protected]@-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' [email protected]@-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' [email protected]@-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' [email protected]@-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 09: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 21:58. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:30.




















