【问题标题】:Paste Highlighted Cells to Other Column将突出显示的单元格粘贴到其他列
【发布时间】:2020-01-18 18:48:47
【问题描述】:

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

A                B
abc1           abc1
abc2           abc1
abc1              
test3                
abc3

我正在使用这种高亮颜色,不确定它在 VBA 中的值。

【问题讨论】:

  • 是否可以复制 A 列中所有突出显示的单元格并将这些值粘贴到 B 列? - 可以。

标签: excel vba conditional-formatting


【解决方案1】:

您可以使用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

【讨论】:

  • 嗯...我运行了它,但它没有粘贴到 B 列。有什么想法吗?
  • rng.Offset(i, 1).PasteSpecial xlPasteAll 应该将其粘贴到 B 列,但它不会从列顶部开始。相反,它会将 B 列中的值粘贴在同一行 i 中,其中找到了彩色单元格。
  • 是否可以粘贴在B列的顶部?当我过滤 B 列时,没有值,这可能是由于记录数 160k。
  • Hmmmm... 它适用于我小于 10 的较小数据集,但对于我的 160k 数据集它不起作用。想知道它可能是什么。
  • 所以,我在我的 160k 数据集上突出显示了一个单元格,公式效果很好!我认为只是文件上的大量记录导致了问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-12
  • 2021-02-17
  • 2018-03-30
  • 1970-01-01
  • 2019-07-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多