Macro di formattazione condizionale
Hai un problema con Excel? 
Macro di formattazione condizionale
di Attilio data: 09/12/2012 17:57:47
Ciao, mi servirebbe in VBA una macro automatica nel foglio mi colori di rosso le celle e di bianco bold il numero, in pratica la macro deve colorare tutte le celle in colonna A:A di cui anno in comune consecutivamente lo stesso numero. Es. 2 - 3 - 7 - 12 - 25 - 10 - 68 - 68 - 32 - 7 - 7, in questo caso dovrebbe colorare in rosso le celle che hanno il numero 68 e 7 essendo cinsecutivi, ringrazio gentilmente a chi mi aiuta
di Vecchio Frac data: 09/12/2012 18:24:57
Bè il titolo del post è fuorviante rispetto al quesito :)
Comunque hai già ipotizzato un algoritmo, adesso devi tradurlo.
Parti con un ciclo dalla prima cella del range, esamina la cella, se il valore è uguale a quello precedente allora colora entrambe di rosso altrimenti prosegui.
- imposta "cella_precedente" su vuoto
- parte il ciclo
- leggi prossima cella
- se cella = cella_precedente: formatta cella_precedente e cella sui colori desiderati (interior.color rosso e font.color bianco)
- altrimenti: poni cella_precedente = cella
- prosegui col ciclo da leggi prossima cella
Questo algoritmo colora di rosso tutti i numeri consecutivi che trova, fossero anche tre o quattro, finchè non ne trova uno diverso.
di Attilio data: 10/12/2012 11:46:51
Ciao Vecchio Frac, ti ringrazio per la risposta rapida, ma il mio problema è che con VBA sono quasi a zero, quindi non saprei proprio come attuare il cerca.vert in vba, potresti esprimere meglio la tua risposta?
di Vecchio Frac data: 10/12/2012 12:59:52
Allora in alternativa al codice ti propongo una soluzione con la formattazione condizionale, che magari era proprio quello che volevi e che forse ti risulta più facile da implementare ^_^
se i dati cominciano in A1, nella prima cella che contiene i dati (i numeri) da confrontare, inserisci questa formula di formattazione condizionale:
=E(A1=A2;A1<>"") e imposta colore carattere bianco, colore motivo Rosso
(se la prima cella con i dati è poniamo A5, la formula deve cambiare in: =E(A5=A6;A5<>"")
nelle celle successive (per tutte le celle successive alla prima) in giù, fino al termine della colonna di dati, imposta questa formattazione condizionale:
=E(O(A2=A1;A2=A3);E(A1<>"";A2<>"")) e imposta sempre colore carattere bianco, colore motivo Rosso
(anche qui se la prima cella con dati non è A1, modifica di conseguenza la formula per far sì che si confronti il dato attuale col precedente e il successivo)
Per copiare questa formattazione condizionale, ti basta scriverla una volta nella seconda cella del range e poi estendere un copia formato dalla seconda cella in giù.
Adesso, dinamicamente, se scrivi due o più numeri consecutivi uguali, questi si colorano di rosso.
Appena ho tempo (o se si fa avanti qualcun altro) e se ti interessa vediamo invece la soluzione con VBA.
di Attilio (utente non iscritto) data: 10/12/2012 18:23:22
Ti ringrazio per la tua pazienza, e quando hai tempo èer ol vba aspetto, grazie ancora
di Vecchio Frac data: 10/12/2012 20:55:03
Ecco il pezzullo di codice.
I dati consecutivi si trovano in colonna A; alla prima riga vuota la procedura si ferma.
Option Explicit
Sub evidenzia_consecutivi()
Dim cella As Range, cella_precedente As Range
Set cella_precedente = Nothing
For Each cella In [A:A]
If cella = "" Then Exit Sub
If Not cella_precedente Is Nothing Then
If cella = cella_precedente And cella.Interior.Color <> vbRed Then
cella_precedente.Interior.Color = vbRed
cella_precedente.Font.Color = vbWhite
cella.Interior.Color = vbRed
cella.Font.Color = vbWhite
End If
End If
Set cella_precedente = cella
Next
End Sub |
di Attilio (utente non iscritto) data: 11/12/2012 14:44:47
Sei stato gentilissimo, mi vergogno quasi a ringraziarti, meriteresti molto di più di un grazie, a presto
di Vecchio Frac data: 11/12/2012 16:03:15
cit. " mi vergogno quasi a ringraziarti"
---> ma che sciocchezza :)
cit. " meriteresti molto di più di un grazie "
---> un bacio? incarico mia moglie a darmelo al posto tuo ^_^
Non hai però detto se le soluzioni proposte funzionano nè se era quello che volevi (magari non volevi evidenziare più di due numeri consecutivi oppure volevi evidenziare solo gli ultimi due, oppure ancora tutti quelli ripetuti tranne il primo della serie, ecc.).
di Attilio data: 12/12/2012 10:37:50
Immaginavo che avresti potuto immaginare la cosa in un bacio, ma mi dispiace per te non è il bacio e nessun contatto fisico....ahahahhahah......magari ad un dono di Natale, questo forse si, cmq a parte gli scherzi, funziona alla perfezione, grazie ancora e se non dovessimo sentirci, ti auguro uno splendido Natale ed un felice anno nuovo (se non finisce il MONDO!!!) a te e la tua famiglia, ciao
Vuoi Approfondire?