Excel VBA如果法定范围百分比

时间:2015-08-13 17:13:52

标签: excel vba

我有这个代码,根据整数“Aa”使“products2”小写或大写。 “Aa”是一个单元格,它可以是89%到94.9999%,在这种情况下,产品应该是小写的,或者它将是95%到100%,在这种情况下它将是大写的(elseif)。如何格式化If语句以便它执行此操作?

         If Aa = <89% and >94.9999% Then
             Products2 = Chr(J + Asc("a"))
               MsgBox "Products2 = " & Products2
          ElseIf Aa = <95% to >100% Then
             Products2 = Chr(J + Asc("A"))
                MsgBox "Products2 = " & Products2
          End If

1 个答案:

答案 0 :(得分:4)

您需要将每个比较与And

结合起来
If Aa >= .89 And Aa < .95 Then
    'blah
ElseIf Aa >= .95 And Aa <= 1 Then
    'blah
End If

这是这个(带括号)的逻辑等价物

If (Aa >= .89) And (Aa < .95) Then
    'blah
ElseIf (Aa >= .95) And (Aa <= 1) Then
    'blah
End If

但实际上我会把它写成Select语句,因为它支持范围,它更具可读性。

Select Case Aa
    Case .95 To 1
        'blah
    Case .89 To .95
        'blah
End Select

注意我已经颠倒了订单。这是在第二种情况下使用.95进行比较,而不是.949999,如果你不小心可能会错过.949999和.95之间的浮点值

但这确实忽略了其他情况。如果你的逻辑真的是任何高于95%的东西是单向的,而95%以下的东西都是另一种,那么这就更好了:

Select Case Aa
    Case >= .95
        'blah
    Case Else
        'blah
End Select

现在相当于:

If Aa >= .95 Then
    'blah
Else
    'blah
End If

在我看来,最后两个中的一个是最好的,因为它涵盖了所有情况。如果你不这样做,你可能会得到一个不会改变格式的边缘情况,这可能会产生误导,因为格式化可能无法反映当前的状态。