在列中填充具有先前已知值的空单元格

时间:2016-03-09 21:38:14

标签: excel vba

我在表格中有各种空单元格,我想用该列中的最后一个已知值填充。

Sub autofiller()

Dim DataRange As Range
Set DataRange = Range("A1:D4")
Dim i As Integer

FillA = ""

For Each cell In DataRange

If cell(1, 1).Value <> "" Then

FillA = cell(1, 1).Value

Else
    cell(1, 1).Value = FillA

End If

i = i + 1

Range("C1").Value = i

Next

End Sub

第一行中没有空值。我的逻辑是,它将查看该范围内的每个单元格,如果它不是一个空单元格,请选取该值,直到它到达一个空单元格,然后我将放置该值。我的柜台是我跟踪的。在我看来,代码是逐个单元格地检查,但我希望它垂直检查单元格。我怎样才能垂直检查?

我是VBA的新手,所以任何其他评论/指南都会有所帮助。

1 个答案:

答案 0 :(得分:1)

试试这个:

Sub autofiller()
Dim cell as range
Dim DataRange As Range
Set DataRange = Range("A1:D4")

For Each cell In DataRange
    If cell.Value = "" Then
        cell.Value = cell.Offset(-1).Value
    End If
Next

End Sub

因为每个都会从左到右,从上到下,当它遇到空单元格时,它将填充上面的单元格。

您混淆了变量cell这是一个范围变量Cells(),它是一个范围对象。 cell(1,1)等于cell,因为它将第一个单元格放在一个范围内。

另一种写cell.Offset(-1)的方法是cell(-1,1)这会将单元格直接放在单元格上方。