IF从Excel到VBA的条件

我很困惑如何将这个问题从Excel中传递给VBA:

在excel中:

单位理论:

=IF(cond1, IF(cond2, statement1,statement2),IF(cond2,statement3,statement4)) 

实际的Excel单元格:

 =IF($B$2="USD",IF($B$170="USD",B173,B173/B$1),IF($B$170="USD",B173*B$1,B173)) 

在VBA中:

 If cond1 Then If cond2 Then Statement1 Else Statement2 End if Elseif cond2 Then statement3 Else statement4 End if 

它会好吗?

也许这是一个替代?

 Select Case CStr(Range("B2").text = "USD") & CStr(Range("B170").text = "USD") Case Is = "TrueFalse" Range("A1").Value = Range("B173").Value / Range("B1").Value Case Is = "FalseTrue" Range("A1").Value = Range("B173").Value * Range("B1").Value Case Else Range("A1").Value = Range("B173").Value End Select 

刚刚一直玩这个更多一点,你可以通过在计算中使用布尔值作为一个值,在math上得到它更小,它得到只有2行代码,设置一个例外的价值,然后覆盖它,如果它符合标准。

我们用这里的math表示X * Y = X /(1 / Y)

通过知道这一点,我们可以使用布尔值作为1或0,并以这种方式操作公式。

这是我想出来的:

 Range("A1").Value = Range("B173").Value If CLng(Range("B2").Text = "USD") + CLng(Range("B170").Text = "USD") = -1 Then Range("A1").Value = Range("B173").Value * (((CLng(Range("B2").Text = "USD") * -1) / Range("B1").Value) + ((CLng(Range("B170").Text = "USD") * -1) * Range("B1").Value)) 

尽pipe如此,阅读和维护比我原来的build议要难得多:)。

这将做你在问什么:

 If Range("B2") = "USD" Then If Range("B170") = "USD" Then Range("A1").Value = Range("B173").Value Else Range("A1").Value = Range("B173").Value / Range("B1").Value End If Else If Range("B170") = "USD" Then Range("A1").Value = Range("B173").Value * Range("B1").Value Else Range("A1").Value = Range("B173").Value End If End If 

这假设你想要A1中的值。

同样格式化上面的代码可以使它更容易阅读。