在空单元格中划分非空单元格(在一列中)的值,并用vba重复

时间:2014-08-01 09:46:01

标签: excel vba excel-vba

我从这样的表开始:

colB:
row1: 15
row2: (empty)
row3: (empty)
row4: 60
row5: (empty)
row6: 45
row7: 88
row8: (empty)
row9: 10
...
rowN: 56

我想将非空单元格的值(例如,第1行中的15)除以空白的后续单元格的数量。这意味着,在转换之后,B列将如下所示:

colB:
row1: 5
row2: 5
row3: 5
row4: 30
row5: 30
row6: 45
row7: 44
row8: 44
row9: 10
...
rowN: 56

我不知道该怎么做。任何人都可以帮助我,请吗?

1 个答案:

答案 0 :(得分:2)

那么将数字除以空白数+ 1? (15/3)除非没有空格然后除以1? (45 == 45)

这将通过锚定一个填充的单元格来查找B中的最后一个单元格,查看其垂直偏移,然后在不为空时重新锚定;

Dim max As Long, i As Long, cell As Range

Set cell = Range("B1")
max = Range("B" & Rows.Count).End(xlUp).Row

Do
    i = i + 1
    If (cell.Offset(i, 0).value <> "") Then
        Range(cell, cell.Offset(i - 1, 0)).value = cell.value / i
        Set cell = cell.Offset(i, 0)
        i = 0
    End If

    If cell.Row = max Then Exit Sub
Loop