Excel VBA如果说明范围百分比

我有这个代码,使“产品2”小写或大写基于整数“Aa”。 “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 

您需要将每个比较与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 

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