在列中填充具有“上一个已知值”的空单元格

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

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新手,所以任何额外的意见/指南将有所帮助。

尝试这个:

 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 

因为每个会从左到右,从上到下它会填满上面的单元格,因为它遇到空单元格。

您正在将范围variables的variablescell与作为范围对象的Cells()混淆。 cell(1,1)等于cell因为它正在获取范围为1的第一个单元格。

另一种编写cell.Offset(-1)方法是将cell(-1,1)获取单元cell.Offset(-1)上方的单元格。