尝试设计一个功能,允许我输入过去一个月的销售收盘价和交易佣金,然后根据交易方式返回“低”,“高”或“确定”与我们办公室的佣金图表相匹配。
例如,如果交易价格为25,000美元且记录的佣金为2%,则该功能应根据下表返回“HIGH”。
Up to $49,999 1.50%
$50,000- $99,999 1.25%
$100,000-$199,999 0.85%
$200,000-$399,999 0.75%
$400,000-$699,999 0.50%
$700,000-$999,999 0.30%
$1,000,000-$1,499,999 0.20%
$1,500,000 and above 0.10%
我到目前为止的代码如下;我只分享了第一行,因为那是我一直在测试的。有更多重复的部分具有不同的数字,以反映图表的级别。
功能FeeChecker(x,y)
If 50000 > x > 0 Then
If y > 1.5 Then FeeChecker = "HIGH"
ElseIf y < 1.5 Then FeeChecker = "LOW"
ElseIf y = 1.5 Then FeeChecker = "OKAY"
End If
End Function
(完全披露,自从我使用VBA已经有一段时间了,所以如果我犯了一个明显的错误,请继续关注)到目前为止我可以让它返回“LOW”和“OKAY”没有问题,但当我使用更高的佣金率时,它返回数字0而不是“高”。我需要添加/更改什么? TIA
答案 0 :(得分:0)
您可能需要将FeeChecker = "HIGH"
代码(和LOW和OKAY相同)放在不同的行上。将Then
部分放在与If
部分相同的行上的语法没有相应的End If
。我还没有测试过这个变化,这是我做的第一件事:
If y > 1.5
Then FeeChecker = "HIGH"
ElseIf y < 1.5
Then FeeChecker = "LOW"
Else ' y = 1.5
Then FeeChecker = "OKAY"
End If
答案 1 :(得分:0)
一种方法是使用Select Case
语句,如下所示:
Function FeeChecker(Deal As Double, Commission As Double)
Select Case Deal
Case Is <= 49999
FeeChecker = IIf(Commission < 1.5, "Low", IIf(Commission > 1.5, "High", "Okay"))
Case Is <= 99999
FeeChecker = IIf(Commission < 1.25, "Low", IIf(Commission > 1.25, "High", "Okay"))
End Select
End Function
您可以添加额外的案例陈述以适合您的佣金表。
答案 2 :(得分:0)
1)是的,它似乎想要你自己的线路上的FeeChecker =“High” 2)你错过了End If。两个Ifs。只有一个结束If。 3)为什么使用外环和硬编码50000和1.5?为什么不将数据放在Excel电子表格的表格中?使其成为税表格式,以便您可以使用不寻找精确值的查找函数(比如与最后一个参数1匹配)。那么你只需要内部的If语句。
Function FeeChecker(x,y)
' Lookup y value based on x from table and store as commPct
If y > commPct Then
FeeChecker = "HIGH"
ElseIf y < commPct Then
FeeChecker = "LOW"
ElseIf y = commPct Then
FeeChecker = "OKAY"
End If
End Function