循环遍历除少数之外的所有数字

Joh*_*son 2 excel vba excel-vba

我需要循环通过i = 1到99,但我想跳过一些特定的i值.我想跳过的数字是41,83,87,91,92,93,98

我意识到我可以把所有的动作都嵌入到一个i <> 41或者i <> 83等等中.难道没有更简单的方法吗?也许指定一个变量来包含要跳过的值CSL并使用Split?我不知道我的大脑不起作用.请帮忙.

     For i = 1 To 99
         If i <> 41 And i <> 83 And i <> 87 And i <> 91 _
         And i <> 92 And i <> 93 And i <> 98 Then
             'do stuff
         End If
     Next i
Run Code Online (Sandbox Code Playgroud)

宁愿设置一个变量,如:

    not_use = "41,83,87,91,92,93,98"
Run Code Online (Sandbox Code Playgroud)

然后有一些For i = 1 To 99除非,not_use 但据我所知,没有办法写出来.

小智 6

您可以使用比If使用Select Case以下语句更紧凑的方式指定要忽略的值:

For i = 1 To 99
  Select Case i
  Case 41, 83, 87, 91, 92, 93, 98
    'Do nothing
  Case Else
    'Do stuff
  End Select
Next
Run Code Online (Sandbox Code Playgroud)


Sam*_*Sam 6

您可以使用工作表公式计算表达式:

not_use$ = "43,83,87,91,92,93,98"

For i = 1 To 99
    If Application.Evaluate("ISERROR(MATCH(" & i & ",{" & not_use & "},0))") Then
        '// Do Something
    End If
Next i
Run Code Online (Sandbox Code Playgroud)

这意味着"测试"一次性评估,而不是使用多个标准或进一步循环.