Excel Comment find des cellules ou des valeurs en double dans une rangée?

J'ai un set de données dans lequel chaque ligne appartient à une personne unique, donc ce que je veux faire, c'est de find des valeurs en double dans chaque ligne.

J'ai essayé d'utiliser le formatting conditionnel, mais il prend beaucoup de time car je dois l'appliquer à chaque ligne individuelle, sinon il finda des duplicates parmi toutes les lignes, pas seulement une ligne.

entrez la description de l'image ici

Pourriez-vous suggérer quelque chose qui peut m'aider, il peut s'agir de formule ou de vba ou de formule pour le formatting conditionnel.

J'ai utilisé un enregistreur macro pour créer une macro et les résultats sont ci-dessous. Si je peux faire passer une gamme de lignes et appliquer le formatting qui pourrait aider

Sub DuplicatesRow1() ' ' DuplicatesRow Macro ' ' Rows("251:251").Select Selection.FormatConditions.AddUniqueValues Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority Selection.FormatConditions(1).DupeUnique = xlDuplicate With Selection.FormatConditions(1).Font .Color = -16383844 .TintAndShade = 0 End With With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .Color = 13551615 .TintAndShade = 0 End With Selection.FormatConditions(1).StopIfTrue = False Rows("252:252").Select Selection.FormatConditions.AddUniqueValues Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority Selection.FormatConditions(1).DupeUnique = xlDuplicate With Selection.FormatConditions(1).Font .Color = -16383844 .TintAndShade = 0 End With With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .Color = 13551615 .TintAndShade = 0 End With Selection.FormatConditions(1).StopIfTrue = False Rows("253:253").Select Selection.FormatConditions.AddUniqueValues Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority Selection.FormatConditions(1).DupeUnique = xlDuplicate With Selection.FormatConditions(1).Font .Color = -16383844 .TintAndShade = 0 End With With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .Color = 13551615 .TintAndShade = 0 End With Selection.FormatConditions(1).StopIfTrue = False Range("E259").Select End Sub 

Voici une boucle qui définira un format conditionnel sur chaque ligne. J'ai utilisé des references de feuilles et de gamme en fonction de votre échantillon de données et de code. Vous modifiez ceux-ci en fonction de votre set de données exact.

Je noterai également que je suis préoccupé par le fait que cela provoque des problèmes de performance dans Excel s'il existe de nombreuses lignes, car la quantité de formats peut augmenter sérieusement la taille de votre file et affecter les performances.

 Sub LoopCF() Dim ws As Worksheet Set ws = Sheets("Sheet1") 'Dim lRow As Long 'lRow = ws.Range("A2").End(xlDown).Row 'will give row 200 as long as contiguous rows Dim rng As Range, cel As Range Set rng = ws.Range("B2:B200") 'ws.Range("B2:B" & lRow) For Each cel In rng With cel.Resize(1, 4) .FormatConditions.AddUniqueValues .FormatConditions(.FormatConditions.Count).SetFirstPriority With .FormatConditions(1) .DupeUnique = xlDuplicate With .Font .Color = -16383844 .TintAndShade = 0 End With With .Interior .PatternColorIndex = xlAutomatic .Color = 13551615 .TintAndShade = 0 End With .StopIfTrue = False End With End With Next End Sub 

J'ai ensuite travaillé sur cela et j'ai réussi à proposer le code suivant qui semble fonctionner pour moi. Je suis nouveau dans VBA et je n'ai pas assez d'expérience, alors faites-le moi savoir si mon code peut être amélioré davantage

 Private Sub HighlightDuplicateRow(row As Integer) Dim report As Worksheet Set report = Excel.ActiveSheet report.Cells(row, row).EntireRow.Select Selection.FormatConditions.AddUniqueValues Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority Selection.FormatConditions(1).DupeUnique = xlDuplicate With Selection.FormatConditions(1).Font .Color = -16383844 .TintAndShade = 0 End With With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .Color = 13551615 .TintAndShade = 0 End With Selection.FormatConditions(1).StopIfTrue = False End Sub Sub DuplicatesInEachRow() Dim counter As Integer, limit As Variant counter = 2 limit = InputBox("Give me last row number", "Highlight Duplicates in a Row") If limit = "" Then Exit Sub Do Until counter > limit Call HighlightDuplicateRow(counter) counter = counter + 1 Loop End Sub