填写VBA中的空单元格

时间:2017-03-10 10:53:42

标签: excel vba excel-vba

我的Excel中的VBA代码有问题。 我的表包含几个不同长度的列。在每个列的前面,我想显示块的实际ID(不是问题)。 问题是实际ID只出现在块的第一行,所以每个块ID下都有一定数量的空单元格。

我找到了一个代码,我可以使用实际的块ID填充这些空单元格:

Sub Leere_auffuellen()
    With Worksheets(3).Range("A5:A1000")
        If Application.WorksheetFunction.CountBlank(Intersect(.Cells,  .Parent.UsedRange)) > 0 Then
            .SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
            .Value = .Value
        End If
End Sub 

这适用于最长的列。我的问题是我也希望为较短的列做到这一点。如果我使用上面的代码,它会用ID填充行,直到达到最长行的长度。 如何调整代码以使其引用我想要的列?

我希望你们明白我想要的东西

1 个答案:

答案 0 :(得分:0)

试试这个

Sub Leere_auffuellen()

Dim x As Long
Dim LastRow As Long
Dim LastCol As Long
Dim DataStarted As Boolean
DataStarted = False

'Activate target worksheet.
Worksheets(3).Activate
'Find the last row with data.
LastRow = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

For x = 1 To LastRow
    'Don't do anything until the first time a non-blank cell in column A is reached.
    If Cells(x, 1) <> "" Then
        DataStarted = True
    'Then if there are blanks in the row, fill them in with the data from the cell above.
    ElseIf DataStarted Then
        LastCol = Rows(x - 1).Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
        With Range(Cells(x, 1), Cells(x, LastCol))
            .SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
            .Value = .Value
        End With
    End If
Next x

End Sub