【发布时间】:2018-10-29 22:44:14
【问题描述】:
我当前的工作表有数据,其中很少有绿色的单元格,我需要将那些单元格有绿色的行(只有几个绿色的单元格)移动或复制到另一个工作表。我已经为此编写了代码,但是循环在每一行的第一列上运行,但不会检查该行中的每个单元格。我需要检查每个单元格的每一行,如果有任何绿色单元格,那么它应该将整行复制并粘贴到下一行的另一张表中
Sub Copy()
lastRow = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
sheet2Counter = 1
For i = 1 To lastRow
ConditionalColor = Worksheets("Sheet1").Cells(i, 1).Interior.ColorIndex
Worksheets("Sheet1").Activate
Worksheets("Sheet1").Range("A" & i & " ").Select
If ConditionalColor = 35 Then
ActiveCell.EntireRow.copy
Worksheets("Sheet2").Activate
lastrow1 = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row
If Not Worksheets("Sheet2").Range("A" & lastrow1 & " ") = "" And Not i = 1 Then
lastrow1 = lastrow1 + 1
Worksheets("Sheet2").Range("A" & lastrow1 & " ").Select
With Selection
.PasteSpecial Paste:=xlPasteAll
End With
Else
Worksheets("Sheet2").Range("A1").Select
With Selection
.PasteSpecial Paste:=xlPasteAll
End With
End If
Worksheets("Sheet1").Cells(i, 1).Value
End If
Next
End Sub
【问题讨论】:
-
这些单元格是否用条件格式着色?因为
.Cells(i, 1).Interior.ColorIndex将不检测条件格式。您可以使用DisplayFormat,即.Cells(i, 1).DisplayFormat.Interior.ColorIndex。 -
但这会检测到我需要的颜色..根据我的要求,我需要 35 个索引颜色并且效果很好..但这里的问题是我能够为第一列中的每一行执行此操作,但是不是该特定行中的每个单元格。如果每行的任何单元格的颜色索引为 35,我想复制整行并粘贴到另一张表中
-
好的,那么您没有使用条件格式 - 从名称
ConditionalColor中不清楚。 -
是的,我没有使用条件格式,因为我的公式很差......所以我从来没有尝试过。但编写了几行 VBA 代码,适用于每一行的第一列。
-
使用 ColorIndex 是个坏主意,因为它可能会根据您使用的主题而改变。请改用 RGB 值。