Excel 实时突出显示单元格的副本--是否有此插件?

Excel 实时突出显示单元格的副本--是否有此插件?,excel,vba,excel-formula,Excel,Vba,Excel Formula,我试图在Excel中识别重复项。我可以使用标准excel工具突出显示列中的所有重复项 理想情况下,我希望,比如说,在单元格A3中单击,让excel立即高亮显示A列中的所有实例,它们是A3的副本。这应该是“实时的”。如果你想用VBA解决这个问题,你可以尝试下面的方法,但正如PEH已经指出的那样,这对于大量数据来说并不理想 这必须应用于您正在使用的工作表,并假设您只评估A列 注意:双击工作表上的单元格时,它将检查A列 Private Sub Worksheet_BeforeDoubleClick(B

我试图在Excel中识别重复项。我可以使用标准excel工具突出显示列中的所有重复项


理想情况下,我希望,比如说,在单元格A3中单击,让excel立即高亮显示A列中的所有实例,它们是A3的副本。这应该是“实时的”。

如果你想用VBA解决这个问题,你可以尝试下面的方法,但正如PEH已经指出的那样,这对于大量数据来说并不理想

这必须应用于您正在使用的工作表,并假设您只评估A列

注意:双击工作表上的单元格时,它将检查A列

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

'Name your sheet here
SheetName = "Sheet1"

'Work out how many rows there are in Column A
LastRow = Sheets(SheetName).Cells(Rows.Count, 1).End(xlUp).Row

'Copy current value to check later
CheckValue = Selection.Value


    'Validate there is more than 1 filled cell
    If LastRow > 1 Then

        'Redim an array to hold all Column A data then load it to the array
        ReDim DataArray(1 To LastRow) As Variant
        DataArray = Range(Sheets(SheetName).Cells(1, 1), Sheets(SheetName).Cells(LastRow, 1))

        'Clear previous highlighting
        Range(Sheets(SheetName).Cells(1, 1), Sheets(SheetName).Cells(LastRow, 1)).Interior.Pattern = xlNone

        'loop through array highlighting cells that match the "CheckValue"
        For I = 1 To LastRow

            If DataArray(I, 1) = CheckValue Then

                Sheets(SheetName).Cells(I, 1).Interior.ColorIndex = 4

            End If

        Next I

    End If

End Sub

这可能是一个更优雅的解决方案。

如果您想要一个VBA解决方案来解决这个问题,您可以尝试下面的方法,但正如PEH已经指出的,这对于大量数据来说并不理想

这必须应用于您正在使用的工作表,并假设您只评估A列

注意:双击工作表上的单元格时,它将检查A列

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

'Name your sheet here
SheetName = "Sheet1"

'Work out how many rows there are in Column A
LastRow = Sheets(SheetName).Cells(Rows.Count, 1).End(xlUp).Row

'Copy current value to check later
CheckValue = Selection.Value


    'Validate there is more than 1 filled cell
    If LastRow > 1 Then

        'Redim an array to hold all Column A data then load it to the array
        ReDim DataArray(1 To LastRow) As Variant
        DataArray = Range(Sheets(SheetName).Cells(1, 1), Sheets(SheetName).Cells(LastRow, 1))

        'Clear previous highlighting
        Range(Sheets(SheetName).Cells(1, 1), Sheets(SheetName).Cells(LastRow, 1)).Interior.Pattern = xlNone

        'loop through array highlighting cells that match the "CheckValue"
        For I = 1 To LastRow

            If DataArray(I, 1) = CheckValue Then

                Sheets(SheetName).Cells(I, 1).Interior.ColorIndex = 4

            End If

        Next I

    End If

End Sub

这可能是一个更优雅的解决方案。

快速且肮脏,请将其放置在“需要的工作表代码”窗格中:

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column > 1 Then Exit Sub

    Dim cellsToHighlight As Range, cell As Range
    Set cellsToHighlight = Range("B1")
    For Each cell In Range("A1", Cells(Rows.Count, 1).End(xlUp))
        If cell.Value2 = Target.Value2 Then Set cellsToHighlight = Union(cellsToHighlight, cell)
    Next
    Set cellsToHighlight = Intersect(cellsToHighlight, Columns(1))
    If Not cellsToHighlight Is Nothing Then cellsToHighlight.Select
End Sub

又快又脏,请将其放置在“通缉表代码”窗格中:

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column > 1 Then Exit Sub

    Dim cellsToHighlight As Range, cell As Range
    Set cellsToHighlight = Range("B1")
    For Each cell In Range("A1", Cells(Rows.Count, 1).End(xlUp))
        If cell.Value2 = Target.Value2 Then Set cellsToHighlight = Union(cellsToHighlight, cell)
    Next
    Set cellsToHighlight = Intersect(cellsToHighlight, Columns(1))
    If Not cellsToHighlight Is Nothing Then cellsToHighlight.Select
End Sub

对“重复值”使用条件格式

对“重复值”使用条件格式

Excel的条件格式功能可以轻松地识别列表中的重复值:。任何在“实时”中对每个单元格选择进行更改的操作都会大大降低Excel的速度。根据数据量的不同,它将不再可用。下面是另一个很好的资源,并提供了许多示例:Excel的条件格式功能可以轻松识别列表中的重复值:。任何在“实时”中对每个单元格选择进行更改的操作都会大大降低Excel的速度。根据数据量的不同,它将不再可用。这里有另一个很好的资源,有很多例子:效果很好,但我理解性能是一个问题。。。无论如何,谢谢你,这有助于加快速度!工作很好,但我理解性能是一个问题。。。无论如何,谢谢你,这有助于加快速度!