将上面的行应对到下面的空行

时间:2017-06-02 15:10:23

标签: excel vba excel-vba copy rows

我尝试使用代码复制行并将值粘贴到它们下面的空白行中。例如:

1  ----> 1
         1
2        2
3        3
         3
4        4

但是当我应用这段代码时:

Sub Copy ()
  Selection.SpecialCells(xlCellTypeBlanks).Select
  Selection.FormulaR1C1 = "=R[-1]c"
End Sub

当我手动输入数字或文本时,我在excel上自己尝试时效果很好。但是当我尝试在客户端的excel表上运行时,我得到以下内容(我将把它们的行表示为任意数字):

1 ----> 1
       R[-1]c
2       2
3       3
       R[-1]c
4       4

有人已经发布了一个效果很好的代码,但我很好奇为什么我的代码没有按照我想要的方式工作。

感谢。

2 个答案:

答案 0 :(得分:0)

如评论中所述,单元格被格式化为文本,这就是单元格内容显示为输入内容的原因。在这种情况下'= R [-1] c'

答案 1 :(得分:0)

您的代码无法正常工作的原因是您在代码中使用的选择。

代码将尝试在选择中找到空白单元格,如果选择内容不包含任何空白单元格,则代码将产生错误。

您可以尝试这样的事情......

Sub Copy()
On Error Resume Next
Columns("A").SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]c"
End Sub

将列A替换为要应用该公式的列。