Excel如何在一行中查找重复的单元格或值?

我有一个数据集,其中每一行属于一个独特的人,所以我想要做的是,在每一行中find重复的值。

我尝试使用条件格式,但它非常耗时,因为我必须将其应用于每个单独的行,否则将查找所有行中的重复不只一行。

在这里输入图像描述

请你能build议一些可以帮助我的东西,可以是公式或vba或条件格式的公式。

我用macroslogging器来创build一个macros,结果如下。 如果我可以通过一系列的行并应用可能有帮助的格式

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 

这是一个循环,将在每一行设置一个条件格式。 我使用了基于您的示例数据和代码的工作表和范围参考。 您可以修改这些以适合您的确切数据集。

我还会注意到,如果有许多行,我担心会导致Excel中的性能问题,因为格式的数量可能会严重增加您的文件大小并影响性能。

 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 

我进一步工作,并设法提出下面的代码,似乎正在为我工​​作。 我是VBA新手,没有足够的经验,所以请让我知道,如果我的代码可以进一步改善

 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