如果a列中有值,则VBA复制/粘贴范围为下面的行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果a列中有值,则VBA复制/粘贴范围为下面的行相关的知识,希望对你有一定的参考价值。

我正在尝试创建一个宏,它将复制一系列值,例如B6:BM6并将其粘贴到下面的行中如果在A列中有值。

所以:如果填充了列A6,则从上面的行复制范围并将它们粘贴到B6中。循环直到A列中没有值。

Sub fillEmptycells()

 Dim i As Integer
 Dim lastRow As Integer

 With ActiveSheet
     lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row  
     For i = 2 To lastRow
         If IsEmpty(.Cells(i, 2)) And Not IsEmpty(.Cells(i, 1)) Then
           .Range(Cells(i - 1, 2), Cells(i - 1, 100)).Copy .Cells(i, 2)
         End If
     Next i
 End With
End Sub

有谁可以帮助我吗?

答案

目前,您只复制一个单元格,而不是整个范围。您需要更改调用Copy方法的范围,以包括要复制的所有单元格。 If语句中的代码将更改为:

 .Range(Cells(i-1,2),Cells(i-1,x)).Copy .Cells(i,2)

其中x将是您要复制的最后一列的列号。

以上是关于如果a列中有值,则VBA复制/粘贴范围为下面的行的主要内容,如果未能解决你的问题,请参考以下文章

搜索日期并复制并粘贴整行:VBA

如何用VBA判断符合条件的数据复制粘贴到相应工作表?

如何用VBA判断符合条件的数据复制粘贴到相应工作表?

在 Excel 2016 中使用 VBA 将选定范围移动到一列上

循环遍历范围,如果单元格包含值,则复制到列中的下一个空单元格

Excel VBA:复制/粘贴范围