在EXCEL的VBA中,用什么办法可以对选中的单元格区域的值先取整,再相加?
我是刚学一些VBA,下面的代码好像是错在WorksheetFunction.TRUNC(target),请高手指教!或者有什么更好的代码,跪求.Functionf(ByV...
我是刚学一些VBA,下面的代码好像是错在WorksheetFunction.TRUNC
(target),请高手指教!或者有什么更好的代码,跪求.
Function f(ByVal target As Range)
f = WorksheetFunction.SumProduct(WorksheetFunction.TRUNC
(target))
End Function 展开
(target),请高手指教!或者有什么更好的代码,跪求.
Function f(ByVal target As Range)
f = WorksheetFunction.SumProduct(WorksheetFunction.TRUNC
(target))
End Function 展开
1个回答
展开全部
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)) 的效果是相同
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)) 的效果是相同
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询