填充空白单元格(变体)

时间:2015-07-13 11:54:08

标签: excel vba excel-vba

我在填充列的空白单元格时遇到问题。

我在A,B,C中有3个列标题。

在此之下我有可变数量的行,但是A列和B列总是有数据。

C列可能有空白。我怎么能做类似的事情: 编辑>转到>特别>空白,在公式栏中键入=,按向上箭头然后 Ctrl + 输入

除了宏之外,宏只会上升到A的最后一行,而不会再进一步​​。

我有:

Sub FillCellsFromAbove()
    ' Turn off screen updating to improve performance
    Application.ScreenUpdating = False
    On Error Resume Next
    ' Look in column A
    With Columns(3)
        ' For blank cells, set them to equal the cell above
        .SpecialCells(xlCellTypeBlanks).Formula = "=R[-1]C"
        'Convert the formula to a value
        .Value = .Value
    End With
    Err.Clear
    Application.ScreenUpdating = True
End Sub

然而,它从页面底部填充,而不是从最后一个“A”值的位置填充。

2 个答案:

答案 0 :(得分:1)

不要使用所有C列 - 首先确定A列中的数据延伸多远,然后在C列中抓取那么多单元格:

Sub FillCellsFromAbove()
    Dim R As Range, n As Long

    n = Range("A:A").Rows.Count
    n = Cells(n, "A").End(xlUp).Row
    Set R = Range(Cells(1, 3), Cells(n, 3))

    Application.ScreenUpdating = False
    On Error Resume Next
    With R
        ' For blank cells, set them to equal the cell above
        .SpecialCells(xlCellTypeBlanks).Formula = "=R[-1]C"
        'Convert the formula to a value
        .Value = .Value
    End With
    Err.Clear
    Application.ScreenUpdating = True
End Sub

答案 1 :(得分:0)

在尝试将公式放入可能不存在的单元格之前,您可能希望测试空白。

With Columns(3).Resize(Cells(Rows.Count, 1).End(xlUp).Row, 1)
    If CBool(Application.CountBlank(.Cells)) Then
        ' For blank cells, set them to equal the cell above
        .Cells.SpecialCells(xlCellTypeBlanks).Formula = "=R[-1]C"
        'Convert the formula to a value
        .Value = .Value
    End If
End With