Loops 优化循环,哪种循环或条件语句最合适

Loops 优化循环,哪种循环或条件语句最合适,loops,vbscript,conditional-statements,Loops,Vbscript,Conditional Statements,我正在读取大xml文件(600mb),并用excel文件检查值。在这里,我使用了几个循环,执行这些循环需要时间。我想在条件语句中替换一些循环 因此: 此函数将工作表名称作为字符串,并尝试查找工作表(对于所有xml节点) 如果我使用select case并像下面那样传递图纸编号而不是图纸名称,会怎么样 sub getSheetNumber( worksheet) select case worksheet case "A" getSheetNumber = 1

我正在读取大xml文件(600mb),并用excel文件检查值。在这里,我使用了几个循环,执行这些循环需要时间。我想在条件语句中替换一些循环

因此:

此函数将工作表名称作为字符串,并尝试查找工作表(对于所有xml节点)

如果我使用select case并像下面那样传递图纸编号而不是图纸名称,会怎么样

sub getSheetNumber( worksheet)
    select case worksheet
    case "A"
        getSheetNumber = 1
    case "B"
        getSheetNumber = 2
    case "C"
        getSheetNumber = 3
    case "D"
        getSheetNumber = 4
    case "E"
        getSheetNumber = 5
    case "F"
        getSheetNumber = 6
    case else
        getSheetNumber = worksheet

这是个好主意还是有其他方法可以避免循环

可以计算字母到数字的映射:

>> For Each c In Split("A B C D E F")
>>     WScript.Echo c, Asc(c) - Asc("A") + 1
>> Next
>>
A 1
B 2
C 3
D 4
E 5
F 6

可以计算字母到数字的映射:

>> For Each c In Split("A B C D E F")
>>     WScript.Echo c, Asc(c) - Asc("A") + 1
>> Next
>>
A 1
B 2
C 3
D 4
E 5
F 6

可以计算字母到数字的映射:

>> For Each c In Split("A B C D E F")
>>     WScript.Echo c, Asc(c) - Asc("A") + 1
>> Next
>>
A 1
B 2
C 3
D 4
E 5
F 6

可以计算字母到数字的映射:

>> For Each c In Split("A B C D E F")
>>     WScript.Echo c, Asc(c) - Asc("A") + 1
>> Next
>>
A 1
B 2
C 3
D 4
E 5
F 6

除了计算值之外,另一种选择是使用字典:

Set getSheetNumber = CreateObject("Scripting.Dictionary")
getSheetNumber.Add "A", 1
getSheetNumber.Add "B", 2
getSheetNumber.Add "C", 3
getSheetNumber.Add "D", 4
getSheetNumber.Add "E", 5
getSheetNumber.Add "F", 6

...

WScript.Echo getSheetNumber(worksheet)

当您想要实现简单的键值映射时,使用
Select..Case
是过分的。

除了计算值之外,另一个选项是使用字典:

Set getSheetNumber = CreateObject("Scripting.Dictionary")
getSheetNumber.Add "A", 1
getSheetNumber.Add "B", 2
getSheetNumber.Add "C", 3
getSheetNumber.Add "D", 4
getSheetNumber.Add "E", 5
getSheetNumber.Add "F", 6

...

WScript.Echo getSheetNumber(worksheet)

当您想要实现简单的键值映射时,使用
Select..Case
是过分的。

除了计算值之外,另一个选项是使用字典:

Set getSheetNumber = CreateObject("Scripting.Dictionary")
getSheetNumber.Add "A", 1
getSheetNumber.Add "B", 2
getSheetNumber.Add "C", 3
getSheetNumber.Add "D", 4
getSheetNumber.Add "E", 5
getSheetNumber.Add "F", 6

...

WScript.Echo getSheetNumber(worksheet)

当您想要实现简单的键值映射时,使用
Select..Case
是过分的。

除了计算值之外,另一个选项是使用字典:

Set getSheetNumber = CreateObject("Scripting.Dictionary")
getSheetNumber.Add "A", 1
getSheetNumber.Add "B", 2
getSheetNumber.Add "C", 3
getSheetNumber.Add "D", 4
getSheetNumber.Add "E", 5
getSheetNumber.Add "F", 6

...

WScript.Echo getSheetNumber(worksheet)

当您想要实现一个简单的键值映射时,使用
Select..Case
是过分的。

假设这是您的需求:

此函数将工作表名称作为字符串,并尝试查找 工作表(适用于所有xml节点)

为什么不使用Excel本身来查找工作表

function searchValue(val, rng, worksheet) 
    set objWorksheet = nothing
    On error resume next
    Set objWorksheet = objWorkbook.Worksheets(worksheet)
    On error goto 0

    If objWorksheet Is Nothing then
         ' Error! worksheet not found
    End if

    <..>
函数搜索值(val、rng、工作表)
设置objWorksheet=nothing
出错时继续下一步
设置OBJWORKEY=OBJWORKEY.工作表(工作表)
错误转到0
如果objWorksheet什么都不是,那么
“错!找不到工作表
如果结束

假设这是您的要求:

此函数将工作表名称作为字符串,并尝试查找 工作表(适用于所有xml节点)

为什么不使用Excel本身来查找工作表

function searchValue(val, rng, worksheet) 
    set objWorksheet = nothing
    On error resume next
    Set objWorksheet = objWorkbook.Worksheets(worksheet)
    On error goto 0

    If objWorksheet Is Nothing then
         ' Error! worksheet not found
    End if

    <..>
函数搜索值(val、rng、工作表)
设置objWorksheet=nothing
出错时继续下一步
设置OBJWORKEY=OBJWORKEY.工作表(工作表)
错误转到0
如果objWorksheet什么都不是,那么
“错!找不到工作表
如果结束

假设这是您的要求:

此函数将工作表名称作为字符串,并尝试查找 工作表(适用于所有xml节点)

为什么不使用Excel本身来查找工作表

function searchValue(val, rng, worksheet) 
    set objWorksheet = nothing
    On error resume next
    Set objWorksheet = objWorkbook.Worksheets(worksheet)
    On error goto 0

    If objWorksheet Is Nothing then
         ' Error! worksheet not found
    End if

    <..>
函数搜索值(val、rng、工作表)
设置objWorksheet=nothing
出错时继续下一步
设置OBJWORKEY=OBJWORKEY.工作表(工作表)
错误转到0
如果objWorksheet什么都不是,那么
“错!找不到工作表
如果结束

假设这是您的要求:

此函数将工作表名称作为字符串,并尝试查找 工作表(适用于所有xml节点)

为什么不使用Excel本身来查找工作表

function searchValue(val, rng, worksheet) 
    set objWorksheet = nothing
    On error resume next
    Set objWorksheet = objWorkbook.Worksheets(worksheet)
    On error goto 0

    If objWorksheet Is Nothing then
         ' Error! worksheet not found
    End if

    <..>
函数搜索值(val、rng、工作表)
设置objWorksheet=nothing
出错时继续下一步
设置OBJWORKEY=OBJWORKEY.工作表(工作表)
错误转到0
如果objWorksheet什么都不是,那么
“错!找不到工作表
如果结束