lac*_*daz 5 excel select vba if-statement case
我想知道在处理大量数据时这将如何影响我的编码,以及我将如何构建我的逻辑参数
两个问题:
1) IF-ELSE 和 Select CASE 的主要区别是什么?选择案例是否通过同时评估所有案例来运行?
如果我有一种情况,根据其构造的性质,需要同时满足两个或多个案例,例如
int = 5
Select case int
Case >0
Case 5
Case <0
Run Code Online (Sandbox Code Playgroud)
在我需要“触发”案例“1”和“2”以进行操作的地方,我是否使用 CASE 而不是 IF ELSE?
2)现在对于另一种情况,如果我有一个变量会触发更多一个案例,但我想按优先级限制在一个案例中,说我只希望案例“1”作为行动并排除其余的,我是是否有权说 IF-ELSE 会在这方面取得胜利?
编辑 - 我意识到我的问题措辞不当。我对代码做了一些编辑
Select Case在实际回答您的问题之前进行一些澄清:
Case在 VBA中的一个开关中组合多个值,例如:Case Is>40, 20, 10, 2 To 3,有关更多信息,请参阅MSDN 上的文档Case,找到匹配后退出(例如,在示例中执行Case >0然后退出甚至不评估Case 5)如果你想对一个值执行“both”,你可以if在 case 中嵌套:
Case Is > 0
<Common code>
If i = 5 Then
<code only for case 5>
End If
Run Code Online (Sandbox Code Playgroud)Select Caseif IfSelect Case例如:
if和 和是同一时间select,但if更容易阅读)Select Case您类似,您也可以使用elseif来准备多重比较,它也会在第一个满足条件时停止,但在这里您的表达式每次都会被评估,直到找到匹配项,当然您可以使用更复杂的条件。If-Else 和 Switch 语句在不同情况下都很好。
例如,If-Else 的逻辑条件如下:
if (n < 5 && a > 5) { } // && is a logical AND
Run Code Online (Sandbox Code Playgroud)
和嵌套结构,例如
if (n < 5) {
if (n < 0)
{
}
else
{
}
} else { }
Run Code Online (Sandbox Code Playgroud)
您不能在 switch 语句中执行此操作。
然而,在某些情况下 switch 更好、更优雅、更快:
switch (a)
{
case 1:
case 2:
case 3:
// ...
break;
case 4:
break;
case 5:
break;
case 6:
break;
case 10:
break;
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
if-else 格式看起来会很糟糕:
if (a == 1 || a == 2 || a == 3)
{
}
else
if (a == 4)
{
}
else
// ...
Run Code Online (Sandbox Code Playgroud)
我不确定你的情况,但在大多数语言中,switch声明的性能更高。
简单的说,只要有可能就使用switch语句,而且不止两种情况。如果只有两种情况或者无法使用switch-use if。