2017-10-11 6 views
0

J'ai une gamme/table de disons 10 lignes à 3 colonnes.Excel: Comment colorer les cellules en fonction de la couleur d'autres cellules ayant la même valeur dans une plage?

Une cellule particulière peut avoir une valeur particulière dans la liste créée à l'aide de la validation de données. Toutes les cellules de cette gamme ont la même liste de validation de données.

Si une valeur se répète sur une ligne ou sur une colonne quelconque, pas en diagonale ou autre, ces valeurs sont mises en surbrillance à l'aide de la mise en forme conditionnelle.

Maintenant, je veux que si la même valeur est présente ailleurs dans une ligne ou une colonne non dupliquée, alors ces cellules doivent également être colorées. (De préférence une couleur différente de celle utilisée pour le formatage conditionnel pour connaître la différence entre les deux).

Le but est de savoir quelles valeurs sont répétées et comment, et où dans la gamme ces valeurs sont utilisées mais ne sont pas répétées selon les critères.

P.s .: Veuillez indiquer si des informations supplémentaires ou des précisions sont nécessaires.

Reportez-vous à l'image jointe pour mieux comprendre ma requête. Les couleurs bleues sont colorées à l'aide du formatage conditionnel et les couleurs vertes doivent être coloriées avec votre aide.

Image for understanding

Répondre

1

Vous pouvez utiliser formatting- conditionnelle> Valeurs en double pour toute la gamme, avec différentes couleurs et séquence en condition Formatting-> Gérer les règles. Pas besoin de VBA à mon avis.

EDIT: Ok, je pense que je sais ce que vous demandez. Essayez cette petite sous-routine:

Sub PaintDuplis() 
Dim rng As Range 
Dim col As Range 
Dim row As Range 
Dim cl As Range, cl2 As Range 

Set rng = Range("B4:D11") 'or whatever your range is. 
'Columns 
For Each col In rng.Columns 
    For Each cl In col.Cells 
    If WorksheetFunction.CountIf(col, cl.Value) > 1 Then cl.Interior.Color = vbYellow 
    Next cl 
Next col 

'Rows 
For Each row In rng.rows 
    For Each cl In row.Cells 
    If WorksheetFunction.CountIf(row, cl.Value) > 1 Then cl.Interior.Color = vbYellow 
    Next cl 
Next row 

'Paint whole range 
For Each cl In rng 
    If cl.Interior.Color = vbYellow Then 
    For Each cl2 In rng 
     If cl2.Value = cl.Value And cl2.Interior.Color <> vbYellow Then cl2.Interior.Color = vbRed 
    Next cl2 
    End If 
Next cl 

J'ai abandonné le formatage conditionnel, plutôt que je l'ai utilisé VBA pour peindre des doublons dans les colonnes/lignes, puis peint toutes les cellules encore blanc avec du rouge si elle est égale à celle déjà en jaune. J'espère que ça a aidé.

+0

Non, en réalité, il n'est pas nécessaire de mettre en surbrillance toute la gamme des doublons. Toute la gamme aura des doublons car chaque colonne aura le même ensemble de données. La surbrillance des couleurs est nécessaire uniquement lorsque les données sont répétées sur une ligne ou une colonne. –

+0

Vous avez donc besoin d'une mise en forme conditionnelle pour chaque colonne et pour chaque ligne séparément. S'il existe un grand nombre de lignes, vous pouvez utiliser une macro pour les mettre en forme une par une. – MarcinSzaleniec

+0

Non. J'ai déjà une mise en forme conditionnelle pour chaque ligne et chaque colonne séparément. Maintenant, ce dont j'ai besoin est de mettre en surbrillance les cellules de la plage qui ont la même valeur que celle qui est marquée en double par la mise en forme conditionnelle, à l'exception de celles marquées en double. –