将突出显示的单元格粘贴到其他列

时间:2019-09-17 21:13:29

标签: excel vba conditional-formatting

我有一个条件格式,可以突出显示A列上的所有重复值,并希望将所有突出显示的值粘贴到B列上。问题是,该列有16万行,无法找到突出显示的单元格由于行数巨大。是否可以复制A列中所有突出显示的单元格并将这些值粘贴到B列?我尝试按过滤器颜色排序,但限制为10,000行,因此,如果突出显示行10,001,则不会显示该行。

A                B
abc1           abc1
abc2           abc1
abc1              
test3                
abc3

我正在使用此突出显示颜色,不确定在VBA中它是什么值。 enter image description here

1 个答案:

答案 0 :(得分:2)

您可以将For .. NextIf语句一起使用以查找突出显示的单元格。在这里,i遍历单元格,如果单元格突出显示,则将其粘贴到rng.offset(n,1)的下一列中。 n = n + 1将突出显示的值粘贴到B列中的下一个空行,而不是将值重复粘贴到同一单元格中。此外,application.screenupdating = False使其更有效率。 试试这个:

Sub copyhighlight()

    Dim rng As Range
    Set rng = Range("A1", Range("A1").End(xlUp))
    Dim lastrow As Long
    lastrow = Range("A1").CurrentRegion.Rows.Count

    Dim i As Long
    Dim n As Long

    Application.ScreenUpdating = False

    n = 0

    For i = 1 To lastrow
        If rng.Cells(i, 1).Interior.Color = vbYellow Then
            rng(i, 1).Copy
            rng.Offset(n, 1).PasteSpecial xlPasteAll
            n = n + 1
        End If
    Next i

    Application.ScreenUpdating = True

End Sub