excel 中的工作日函数不接受假日参数的范围并集


=WORKDAY(42429, 1, A10:A15+A20:A22)

此公式在 Excel 中不起作用,并给出 #VALUE 错误。如果我只对假期参数使用一个范围 - 它工作得很好:

=WORKDAY(42429, 1, A10:A15)

这两个范围都包含 3 月的随机日期(42429 是 2 月的最后一天)。

如何使其与单独的范围一起使用,以便它同时尊重它们,而不仅仅是其中一个?

我尝试创建一个小型 VBA 脚本来手动组合范围,然后将该组合的结果用作 WORKDAY 函数的假日参数:

Function Test1(holidays As Range, timeOffs As Range) As Long()
    Dim r() As Long
    Dim h As Range, t As Range
    Dim i As Integer
    i = 1
    ReDim r(1 To holidays.Cells.Count + timeOffs.Cells.Count)
    For Each h In holidays.Cells
        r(i) = h.Value
        i = i + 1
    Next h
    For Each t In timeOffs.Cells
        r(i) = t.Value
        i = i + 1
    Next t
    Test1 = r
End Function

然后

=WORKDAY(42429, 1, Test1(A10:A15, A20:A22))

但是,这会产生完全相同的结果。

调试了我的小脚本,我可以看到返回的对象是一个 Long 数组,它具有我想要的所有值,但是 Excel 出于某种原因也不喜欢这个脚本及其输出,并且仍然给我 #VALUE 错误。

任何提示都非常感谢!

我会在这里使用=Workday.Intl(startDate,endDate,[Weekend],[Holidays])文档,或者如果由于旧版本而不存在 =NETWORKDAYS(startDate,endDate,[Holidays])文档 在这里,您可能必须使用数组公式确认 Ctl+Shift+Enter

试试这个:

=WORKDAY(startDate,1,SMALL((Rng1,Rng2,Rng3),ROW(INDIRECT("1:"&COUNT(Rng1,Rng2,Rng3)))))

SMALL 能够处理输入的多个参数,并给出单个数组作为输出。

从这里得到这个

最新更新