我在表格中有各种空单元格,我想用该列中的最后一个已知值填充。
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的新手,所以任何其他评论/指南都会有所帮助。
答案 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)
这会将单元格直接放在单元格上方。