IF语句或更高效的东西?

时间:2015-04-17 14:03:38

标签: excel vba if-statement

我有3个不同的变量,所有3个变量都有2个不同的值。每个组合都需要做其他事情。我可以将它全部放入IF语句中,但我想知道是否没有更优雅/适当/更短的解决方案。 3个变量的值可以是1或0(如二进制真值表)。

1 个答案:

答案 0 :(得分:0)

虽然它并不比二进制分支更严格地效率(除非你可以预测参数的频率),但另一种选择是使用VBA语法的特性并将其放入{{1}结构:

Select Case

看起来比If替代方案更容易:

Private Sub Example(one As Boolean, two As Boolean, three As Boolean)

    Select Case True
        Case one And Not two And Not three
            Debug.Print "Case 1"
        Case one And Not two And three
            Debug.Print "Case 2"
        Case one And two And Not three
            Debug.Print "Case 3"
        Case one And two And three
            Debug.Print "Case 4"
        Case two And Not three
            Debug.Print "Case 5"
        Case two And three
            Debug.Print "Case 6"
        Case three
            Debug.Print "Case 7"
        Case Else
            Debug.Print "Case 8"
    End Select

End Sub

当我针对更糟糕的情况(单独运行,清除每个运行之间的直接窗口)进行基准测试时,性能差异仅在20万次迭代中大约为20ms。绝大多数性能提升将来自确定评估变量的 order - 即哪些分支更有可能。