我从这样的表开始:
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。例如(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
这一行:Range(cell, cell.Offset(i - 1, 0)).value = cell.value / i
错误(类型不匹配)。 VBA无法执行cell.value / i
。我该如何解决这个问题?