我正在尝试编写定价函数并将其导出为Excel加载项。我希望该函数将一个整数作为参数传递给该函数,将其值乘以一个百分比,然后以最接近7的数字的形式输出该市值。
例如:如果我要标记某件花费150美元的物品,价格上涨45%,然后四舍五入为:
费用:150 * 1.45,然后是MROUND(X,10)-3
到目前为止,我的功能是
Function MARKUP(c as Integer) as Integer
If c < 20 Then
MARKUP = (c) * 1.5
ElseIf c < 40 Then
MARKUP = (c) * 1.4
Else
MARKUP = (c) * 1.3
End If
End Function
很显然,我可以将该值传递到'MROUND([cell],10)-3)'中,以将标记的值精确到7,但是最终用户将不是愿意解决此问题的人。
如果可能的话,我希望这是一个1步的过程。我无法想象如何将MROUND()函数嵌套到自定义MARKUP()函数中。
我在想伪代码类似于:
Function MARKUP(c as Integer) as Integer
If c < 20 Then
MARKUP = (c) * 1.5
ElseIf c < 40 Then
MARKUP = (c) * 1.4
Else
MARKUP = (c) * 1.3
End If
MARKUP = (MROUND(C,10)-3) [???]
End Function
答案 0 :(得分:3)
只需从VBA调用WorksheetFunction
,如下所示:
MARKUP = Application.WorksheetFunction.MRound(c * 1.5, 10) - 3
Select Case
)时, c
是我的首选方法。另外,与c as Long
相比,integer
可能是更安全的路线(由@QHarr建议)
Function MARKUP(c As Long) As Integer
Select Case c
Case c < 20
MARKUP = Application.WorksheetFunction.MRound(c * 1.5, 10) - 3
Case c < 40
MARKUP = Application.WorksheetFunction.MRound(c * 1.4, 10) - 3
Case Else
MARKUP = Application.WorksheetFunction.MRound(c * 1.3, 10) - 3
End Select
End Function