0

我有一段如下所示的代码。我正在尝试计算 ColA 中提到的指定日期之后的第 n 个工作日。我在 ColB(B1:B20) 中有假期列表。我对如何引用这些假期感到困惑一个 FOR 循环代替 XXX。

For i=1 to m
cells(i,"c").Value=workday(cells(i,"A").Value,n,XXX)
next i
4

1 回答 1

1

只需将范围添加到位。

For i=1 to m
cells(i,"c").Value = WorksheetFunction.WorkDay(cells(i,"A").Value,n,[B1:B20])
next i

或者,如果您将执行大量循环,则可能有助于将日期填充到数组中

Dim Holidays As Variant
Holidays = [B1:B10]

For i=1 to m
cells(i,"c").Value = WorksheetFunction.WorkDay(cells(i,"A").Value,n,Holidays)
next i

更新:这是我根据您的评论所做的测试,您能解释一下出了什么问题吗?

在此处输入图像描述

因此,从 2013 年 3 月 1 日开始的 5 个工作日将是 2013 年 3 月 8 日:

  1. 3月4日

  2. 3月5日

  3. 3月6日

  4. 3月7日

  5. 3月8日

    在我列表中的所有假期(随机天数)中,只有 1 个位于第 1 天和第 8 天之间, 3/4/2013. 因此,它会将结果更改为 3 月 11 日。从您的评论中,您似乎在说您的结果是:3 月 22 日,5 个工作日加 10 个假期,这是正确的吗?如您所见,我没有收到该结果。那么,也许更多细节会有所帮助?或者对于另一个问题可能更好。

于 2013-10-17T14:41:39.417 回答