Vba 将上面的行压顶到下面的空白行中

Vba 将上面的行压顶到下面的空白行中,vba,excel,copy,rows,Vba,Excel,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上手动输入数字或文本时,这很好用。但是,当我

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

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工作表上运行此操作时,我会得到以下结果(我将把它们的行表示为任意数字):

有人已经发布了一个非常有效的代码,但我很好奇为什么我的代码没有按我希望的方式工作


谢谢。

如评论中所述,单元格格式为文本,这就是为什么单元格内容显示与输入内容完全一致的原因。在本例中,'=R[-1]c'

代码不起作用的原因是您在代码中使用的选择

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

你可以试试这样的

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

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

客户工作表中R[-1]c前面是否有等号?有可能单元格的格式是文本。是的,还有一个等号。我忘了把它加进去。你说得对,它被格式化为文本,当我把它改为通用时,它就工作了。但是它为什么不能处理文本呢?正如excel在将格式设置为文本时所说:“即使单元格中有数字,格式单元格也会被视为文本。单元格的显示方式与输入的完全相同。”
Sub Copy()
On Error Resume Next
Columns("A").SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]c"
End Sub