我有一个UDF,它总结了它上面的单元格,直到它到达格式化为百分比的单元格。总和公式有效,我可以返回一个数字。 ......然而,似乎它正在围绕它/截断答案。
代码:
Function sumAbove(cel As Range) As Variant
Dim firstCell As Integer
Dim i As Integer
i = 1000
With cel
For i = 1 To 1000
If cel.Offset(-i, 0).NumberFormat = "0.00%" Then
firstCell = cel.Offset(-i, 0).Row
Exit For
End If
Next i
End With
sumAbove = WorksheetFunction.Sum(Range(Cells(firstCell, cel.Column), Cells(cel.Row, cel.Column)))
End Function
我已尝试将Function sumAbove(cel as Range)
作为Integer
和Double
,但没有结果。当我尝试将其设置为Float
时,我收到错误"用户定义的类型未定义"。
使用此列表:
25.00%
5
5
5
5
5.5
上面的代码将正确使用单元格5 + 5 + 5 + 5 + 5.5 ---然而,它错误地得到了总和。如果我将UDF设置为整数,则它的计算结果为25.如果我将UDF更改为Double,则返回25.75(??)等。
如何让它返回25.50?感谢您的任何提示或建议!
答案 0 :(得分:3)
firstCell = cel.Offset(-i, 0).Row
这包括SUM
功能中的百分比
(25%= 0.25,这就是为什么你得到.75)
使用类似的东西:
Function SumAbove(cell As Range) As Double
Dim firstCell As Long
Dim i As Integer
firstCell = cell.Row
While Not cell.Offset((cell.Row - firstCell) * -1, 0).NumberFormat = "0.00%"
firstCell = firstCell - 1
Wend
SumAbove = WorksheetFunction.Sum(Range(Cells(firstCell + 1, cell.Column), cell))
End Function