在多个拆分循环中找到最大值

find max value in multiple split loops

我试图从 4 个分割循环中分离出一个最大值,但到目前为止还没有解开这个谜团。

记录集 XlsRecWeeks 来自 excel 工作表字段 [Scheduled Weeks],其中包含周数作为值,例如 6、 7、 6-22, 9-12;14-24

以此类推,代表每个领域的一周,两周之间的时间段甚至多个星期的几个时间段。

我设法将字段拆分为一个星期数组,我需要确定结果数组中所有值的单个最高星期数。

我可以征求意见吗?

这是目前的代码

do while not XlsRecWeeks.EOF
  If not isnull(XlsRecWeeks("scheduled weeks")) Then
  weekgroups=Split(XlsRecWeeks("scheduled weeks"), ";")
  if ubound(weekgroups) > 0 then
    for each weekintervals in weekgroups
    weekinterval=Split(weekintervals, "-")
        if ubound(weekinterval)> 0 then
        for weeknrs = weekinterval(0) to weekinterval(1)
     Response.Write weeknrs & "<br />"
    next
        else
     Response.Write weeknrs & "<br />"
        end if
next
else
    weekinterval=Split(XlsRecWeeks("scheduled weeks"), "-")
        if ubound(weekinterval)> 0 then
        for weeknrs = weekinterval(0) to weekinterval(1)
     Response.Write weeknrs & "<br />"
        next
        else
     Response.Write XlsRecWeeks("scheduled weeks") & "<br />"
        end if
end if
else
end if
XlsRecWeeks.movenext
loop

您需要使用一个变量 (maxWeek) 来包含最大周数,最初设置为低,以及一个函数来比较您从数据中获得的任何周数与该值 (checkMax)。您所要做的就是在每次获得新的周数时调用该函数,并且在该过程结束时,maxWeek 变量的值是数据集中的最高周数。您可以通过将周数放入数组并对其进行排序来变得时髦,但这对于您正在做的事情来说太过分了。

一些注意事项:1) 代码没有经过测试,但不难理解,而且你看起来很有能力; 2) 请注意,您需要 cInt() 或 cLng() 函数来强制将周数比较为数字 - 如果您忽略这一点,您将得到奇怪的结果。 2) 我重新格式化/缩进了代码,但逻辑与你原来的一样——你会发现你的代码更容易阅读和传递,如果你格式化和 space 它以提高可读性并评论它以进行解释 - 值得考虑为否则你将永远不会得到晋升,因为所有的专业知识都将掌握在你手中[假设你是编码新手 - 如果说教很抱歉]

编辑:第一次编辑时出错 - 我使用了 return,这是 VBS 中的无效动词。众所周知,要 return 来自函数的值,您必须将函数名称设置为变量。 CheckMax() 函数已更改。

编辑:将 val() 的使用更正为 cInt() 函数。 val() 函数是未移植到 VBS 的 VB6 函数。

dim maxWeek
maxWeek = -1 
do while not XlsRecWeeks.EOF
    If not isnull(XlsRecWeeks("scheduled weeks")) Then
        weekgroups=Split(XlsRecWeeks("scheduled weeks"), ";")
        if ubound(weekgroups) > 0 then
            for each weekintervals in weekgroups
                weekinterval=Split(weekintervals, "-")
                if ubound(weekinterval)> 0 then
                    for weeknrs = weekinterval(0) to weekinterval(1)
                        Response.Write weeknrs & "<br />"
                        maxWeek = checkMax(Cint(weeknrs)), maxWeek)                 
                    next
                else
                    weeknrs = weekinterval(0)   
                    Response.Write weeknrs & "<br />"
                    maxWeek = checkMax(Cint(weeknrs)), maxWeek)                 
                end if
            next
        else
            weekinterval=Split(XlsRecWeeks("scheduled weeks"), "-")
            if ubound(weekinterval)> 0 then
                for weeknrs = weekinterval(0) to weekinterval(1)
                    Response.Write weeknrs & "<br />"
                    maxWeek = checkMax(Cint(weeknrs)), maxWeek)                 
                next
             else
                Response.Write XlsRecWeeks("scheduled weeks") & "<br />"
                weeknrs = XlsRecWeeks("scheduled weeks")
                maxWeek = checkMax(Cint(weeknrs)), maxWeek)                 
             end if
        end if
    end if

    XlsRecWeeks.movenext

loop
' maxWeek now holds max week value.    

response.write(maxWeek)

function checkMax(theVal, currentMax)

checkMax = currentMax 
if theVal > checkMax then 
    checkMax = theVal
end if

end function