我有一列,其中一些单元格具有值,但大多数为空白。
我想要的是通过传播值来填补空白。例如
1
空白
空白
3
空白
5
将更改为
1
1
1
1
2.5
2.5
这是我到目前为止所拥有的:
Sub ()
Set z = range("numbers")
For n = 2 To z.Rows.Count
x = z.Cells(n, 1)
If IsEmpty(x) Then
'do nothing
ElseIf x.End(xlUp).Row < z.Cells(1, 1).Row Then
k = x / (x.Row - z.Cells(1, 1).Row + 1)
z(Cells(1, 1), Cells(n, 1)).Offset(0, 5) = k
Else
k = x / (x.Row - x.End(xlUp).Row + 1)
z(Cells(x.End(xlUp), 1), Cells(n, 1)).Offset(0, 5) = k
End If
Next n
此代码有很多问题。在for循环的行上有一个“需要对象”错误。同样,endxlup将为我提供最终值,而不是我遇到的第一个值。我只是想展示我的努力。
答案 0 :(得分:0)
进行大胆的猜测,但是您希望从底部开始到顶部,并且在有空白单元格的地方,均匀分配最后填充的单元格的值。
准备用未经测试的头顶代码刺破
dim i as long, lr as long, j as double, k as long
lr = cells(rows.count,1).end(xlup).row
j = 0 'value to be divided
k = 0 'number of cells to divide j across
for i = lr to 2 step -1 'assumes header in row 1
if cells(i,1).value <> "" AND j <> 0 then
if cells(i,1).value <> "" then j = cells(i,1).value
if cells(i,1).value = "" then k = k+1
else
range(cells(i+1,1),cells(i+1+k,1)).value = j/k
j = 0
k = 0
end if
next i