用上面的值填充任何空单元格

我想使用上面的单元格的值来填充所有空单元格

state name IL Mike Sam CA Kate Bill Leah 

应该如下

  state name IL Mike IL Sam CA Kate CA Bill CA Leah 

我尝试了以下

 Sub split() Dim columnValues As Range, i As Long Set columnValues = Selection.Area Set i = 1 For i = 1 To columnValues.Rows.Count If (columnValues(i) = "") Then columnValues(i) = columnValues(i - 1) End If Next End Sub 

当我设置i时,出现错误。 我怎样才能修改我的代码

这是因为i应该被定义为i=1 。 代码中还有一些其他的问题。 我会改变它是这样的:

 Sub split() Dim columnValues As Range, i As Long Set columnValues = Selection For i = 1 To columnValues.Rows.Count If columnValues.Cells(i, 1).Value = "" Then columnValues.Cells(i, 1).Value = columnValues.Cells(i - 1, 1).Value End If Next End Sub 

对于那些不需要VBA的人来说,selectColumnA,Go To Special …,Blanks和=UpCtrl + Enter应该给出相同的结果。

考虑到你问VBA,有一个比循环更快的方法(VBA相当于上面提到的pnuts,最后删除公式的附加步骤):

 On Error Resume Next With Selection.SpecialCells(xlCellTypeBlanks) .FormulaR1C1 = "=R[-1]C" .Value = .Value End With