| | Post: 19 | Registrato il: 04/11/2005
| Utente Junior | excel 2007 e 2010 | | OFFLINE |
|
25/08/2017 18:26 | |
salve a tutti tempo fa avevo chiesto aiuto per una formula condizionale che mi permetteva di evidenziare dei gruppi di duplicati in colonna "A" solo al verificarsi di altre due condizioni in colonna "C" e "J", e cioè evidenziare i duplicati in colonna A se le date relative all'incrocio in colonna C sono diverse e se il nominativo in colonna J è uguale, la formula funzionante è la seguente:
=MATR.SOMMA.PRODOTTO(($A$1:$A$16962=A1)*($C$1:$C$16962<>C1)*($C$1:$C$16962<>0)*($j$1:$j$16962=j1))*E(C1>0;j1<>"")>0
dal range della formula si evince che la formula interessa numerose righe e dopo effettuata la formattazione il foglio diventa difficile da gestire perchè va in blocco(il su e giu va a scatti, il filtro si blocca ecc, ecc),
domando esiste un modo alternativo magari in vba per ottenere lo stesso risultato
non so se ho reso al meglio vi ringrazio anticipatamente
allego file esempio breve in excel 2007, io uso anche excel 2010
clmmrz
io uso excel 2007 |
|
| | Post: 416 | Registrato il: 24/06/2015
| Città: CATANIA | Età: 80 | Utente Senior | Excel2019 | | ONLINE |
|
26/08/2017 09:05 | |
Ciao
Prova con questa macro
Sub prova()
ur = Cells(Rows.Count, 1).End(xlUp).Row
Range("N2:N" & ur).Interior.ColorIndex = xlNone
For i = 2 To ur - 1
For j = i + 1 To ur
If Cells(i, 1).Value = Cells(j, 1).Value Then
If Cells(i, 3).Value <> Cells(j, 3).Value And _
Cells(i, 3).Value <> "" And Cells(j, 3).Value <> "" Then
If Cells(i, 10).Value = Cells(j, 10).Value Then
Cells(i, 14).Interior.ColorIndex = 3
Cells(j, 14).Interior.ColorIndex = 3
End If
End If
End If
Next j
Next i
End Sub
T'avverto, però, che c'è un doppio errore.
Uno mio: la macro colora la riga 23 (e non dovrebbe)
Uno tuo: dici che sono vere le condizioni in riga 25 e, a mio parere, dovrebbe essere Falso
Ci sentiamo. Ciao,
Mario
PS - Ho colorato le celle della colonna N (al caso, poi, cambia) |
| | Post: 1.575 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
26/08/2017 18:31 | |
ciao
la mia è semplice curiosità in quanto sei in ottime mani.
Tuo scopo (salvo errori):
id uguali
date diverse
nomi uguali
1)Sei certo che quella formula funzioni? Te lo chiedo in quanto la formula riporta VERO in riga 24 e 25, dove le date sono uguali.
2)righe 23-24-25 hanno id uguali, nomi uguali, ma solo una data (26/04/17..anche se scritta male) diversa dalle altre due. Quale riga dovrebbe essere colorata oltre la 23, la 24 o la 25 ?
Ma ripeto, solo curiosità
Saluti
Domenico
Win 10 - Excel 2016 |
| | Post: 20 | Registrato il: 04/11/2005
| Utente Junior | excel 2007 e 2010 | | OFFLINE |
|
29/08/2017 11:49 | |
formattazione condizionale bloccata grazie per l'interessamento, allora effettivamente nel mio esempio ho sbagliato il risultato voluto nelle righe 23, 24 e 25 nell'esempio riportato dovrebbe essere evidenziata solo la riga 23 che soddisfa le tre condizioni; per quanto riguarda la formula (Matr.somma.prodotto) da me indicata proprio a causa dei blocchi mi sembrava funzionare non l'ho testata al 100%. Adesso proverò quanto illustrato da Marius44 e farò sapere.grazie clmmrz
io uso excel 2007 |
| | Post: 22 | Registrato il: 04/11/2005
| Utente Junior | excel 2007 e 2010 | | OFFLINE |
|
29/08/2017 14:52 | |
per Marius44 ho provato il tuo codice e sembra andare bene (il controllo su oltre 15000 righe non è semplice), però non sono riuscito a colorare altre celle invece di quelle della colonna N; ho provato a sostituire a "N2:N" altra lettera corrispondente ad altra colonna ma mi evidenzia sempre la colonna "N"; poi un'altra cosa per eseguire l'operazione ci son voluti 12 minuti, pensi che sia normale vista la grandezza del file oppure ci sono problemi alla mia (macchina Intel(R) Core(™) i3-6100T cpu@ 3.20GHz - Ram 8.00 gb
64 bit - In rete.?)grazie molte
clmmrz
io uso excel 2007 |
| | Post: 23 | Registrato il: 04/11/2005
| Utente Junior | excel 2007 e 2010 | | OFFLINE |
|
29/08/2017 23:46 | |
Marius44, 26/08/2017 09.05:
Ciao
Prova con questa macro
Sub prova()
ur = Cells(Rows.Count, 1).End(xlUp).Row
Range("N2:N" & ur).Interior.ColorIndex = xlNone
For i = 2 To ur - 1
For j = i + 1 To ur
If Cells(i, 1).Value = Cells(j, 1).Value Then
If Cells(i, 3).Value <> Cells(j, 3).Value And _
Cells(i, 3).Value <> "" And Cells(j, 3).Value <> "" Then
If Cells(i, 10).Value = Cells(j, 10).Value Then
Cells(i, 14).Interior.ColorIndex = 3
Cells(j, 14).Interior.ColorIndex = 3
End If
End If
End If
Next j
Next i
End Sub
T'avverto, però, che c'è un doppio errore.
Uno mio: la macro colora la riga 23 (e non dovrebbe)
Uno tuo: dici che sono vere le condizioni in riga 25 e, a mio parere, dovrebbe essere Falso
Ci sentiamo. Ciao,
Mario
PS - Ho colorato le celle della colonna N (al caso, poi, cambia)
clmmrz
io uso excel 2007 |
| | Post: 418 | Registrato il: 24/06/2015
| Città: CATANIA | Età: 80 | Utente Senior | Excel2019 | | ONLINE |
|
29/08/2017 23:48 | |
Ciao
per cambiare colonna non basta sostituire la lettera dell'intervallo, devi anche sostituire il numero della colonna in queste due righe:
Cells(i, 14).Interior.ColorIndex = 3
Cells(j, 14).Interior.ColorIndex = 3
nelle quali, appunto, il n. 14 si riferisce alla colonna N
Per quanto attiene al problema "tempo", visto il considerevole numero di righe (non lo avevi detto), forse sarebbe il caso di utilizzare altri procedimenti (assegnazione dei dati a delle matrici e confrontare le matrici oppure con delle Collection - ma non accettano duplicati - oppure ancora con Dictionary). Questo tipo di operazioni, però, non sono il mio campo ma forse Dodo può venirti incontro.
Ciao,
Mario |
| | Post: 24 | Registrato il: 04/11/2005
| Utente Junior | excel 2007 e 2010 | | OFFLINE |
|
05/09/2017 23:25 | |
ringrazio marius44 per l'attenzione rivolta, ma se c'è qualcuno che può velocizzare quanto proposto da Marius...grazie e grazie clmmrz
io uso excel 2007 |
|
|