vba复制到不同的范围

我有这张名为Consulta表,每当我改变列K的值时,它将E:K的颜色改为绿色或白色,如果它是空的。

我也想要如果行是绿色,将该行复制到名为E-mail 。 这是我到目前为止所尝试的,它的工作原理:

 Sub ChangeColor() Dim ws As Worksheet, ws1 As Worksheet, i As Long, lastrow As Long Set ws = Sheets("Consulta") Set ws1 = Sheets("E-mail") lastrow = ws.Cells(Rows.Count, "E").End(xlUp).Row For i = 5 To lastrow If ws.Range("K" & i) <> "" Then ws.Range("E" & i & ":K" & i).Interior.ColorIndex = 43 ws.Range("E" & i & ":K" & i).Copy ws1.Range("A" & i & ":G" & i) Else ws.Range("E" & i & ":K" & i).Interior.ColorIndex = 2 End If Next If ws.Range("E" & i & ":K" & i).Interior.ColorIndex = 2 Then ws1.Range("A" & i & ":G" & i).Clear End If End Sub 

我的问题是与下面的这一行:

 ws.Range("E" & i & ":K" & i).Copy ws1.Range("A" & i & ":G" & i) 

我实际上想复制到不同的范围,而不是表单E-mail中的相应范围(例如,如果第一个匹配是E3:K3我想复制到A2:K2,如果第二个匹配是E34:K34 I想要复制到A3:K3,所以它)。

我尝试使用另一个循环,但我的Excel变得疯狂,所以我认为我做错了。

任何build议将不胜感激。

您只需要左上angular的单元格作为目的地。 从下往上查看最后使用的单元格并向下偏移一行。

 with ws1 ws.Range("E" & i & ":K" & i).Copy .cells(.rows.count, "A").end(xlup).offset(1, 0) end with 

您可能希望将其放在应用填充颜色的行的上方,否则您也将复制填充颜色。