在EXCEL的VBA中,用什么办法可以对选中的单元格区域的值先取整,再相加?

来源:百度知道 编辑:UC知道 时间:2024/05/18 01:21:32
我是刚学一些VBA,下面的代码好像是错在WorksheetFunction.TRUNC

(target),请高手指教!或者有什么更好的代码,跪求.

Function f(ByVal target As Range)
f = WorksheetFunction.SumProduct(WorksheetFunction.TRUNC

(target))

End Function

Excel VBA 是不接受 TRUNC 函数

WorksheetFunction.TRUNC(target) 可改成以下其中一个, 与TRUNC 的计算结果是一样的

WorksheetFunction.Rounddown(target,2)
WorksheetFunction.Floor(Abs(target),1)*Sgn(target)
Int(Abs(xx))*Sgn(target) ←这个无需加上WorksheetFunction

其实最常用是 Int(target), 但 Int 对于负数是与Trunc有分别的

另顺带一提, 一些旧版本Excel是不能用WorksheetFunction, 要改成 Application,
如 Application.Rounddown(target,2)

新版本(Excel 2000或之后), 两种都可以

以下的VBA刚测试过, 可行。
Function f(ByVal target As Range) As Double
f = WorksheetFunction.SumProduct(Application.RoundDown(target, 0))
End Function
=f(A1:A100) 与 =sumproduct(trunc(A1:A100)) 的效果是相同