获得;开始日期;从Excel函数NETWORKDAYS

获得;开始日期;从Excel函数NETWORKDAYS,excel,Excel,NETWORKDAYS(开始日期、结束日期、[假日]) 如果我们已经知道NETWORKDAYS、end_date和[假日]的值, 是否可以改为获取开始日期 例如: NETWORKDAYS: 5 end_date: 1/1 Holidays: 12,30,12/31 可以自动获取“开始日期”吗?我相信您需要的是这样的: 这是使用UDF(公式中的VBA代码)实现的。 打开VBA编辑器(ALT+F11) 添加新模块 粘贴以下代码: Function countdays(EndDate As Da

NETWORKDAYS(开始日期、结束日期、[假日])

如果我们已经知道NETWORKDAYS、end_date和[假日]的值, 是否可以改为获取开始日期

例如:

NETWORKDAYS: 5 
end_date: 1/1
Holidays: 12,30,12/31

可以自动获取“开始日期”吗?

我相信您需要的是这样的:

这是使用UDF(公式中的VBA代码)实现的。
打开VBA编辑器(ALT+F11)
添加新模块
粘贴以下代码:

Function countdays(EndDate As Date, Days As Integer)
    
    i = 1
    While Application.WorksheetFunction.NetworkDays(EndDate - i, EndDate) < Days
        i = i + 1
    Wend
    
    countdays = EndDate - i
End Function
函数countdays(EndDate为日期,Days为整数)
i=1
而Application.WorksheetFunction.NetworkDays(EndDate-i,EndDate)
将工作簿另存为已启用的工作簿。XLSM或XLSB


这将向后循环开始日期,直到NetworkDays返回正确的天数,然后在单元格中返回该日期。

您只需使用WORKDAY函数即可

由于
NETWORKDAYS
包括开始日期和结束日期,并且
WORKDAY
是一个加法,因此需要将
1
添加到负的NETWORKDAYS值中

例如:
=工作日(B9,-B8+1,B10:C10)


我不太清楚你的意思。我假设开始日期只是用户传入的字符串。对输入进行解析,因此如果输入为“01/03/2020”,并且您只希望开始日期为“03”,只需将一个变量分配给day=start\u date[3:4](python)并返回该变量即可。希望这能有所帮助?是的。使用
WORKDAY
功能。@LifeOfJona,谢谢你的帮助!我表达得不够清楚。。。我不想在没有月份的情况下得到“日期”。我想把“开始日期”作为我的结果。@Ron Rosenfeld为什么我不使用“工作日”,因为我想倒数日期。我知道截止日期(结束日期),但函数Workdays只能向前计算(以开始日期为基础添加工作日)。但无论如何,谢谢你给我的评论!据我所知,您需要使用VBA来完成此操作。请看下面我的答案。非常感谢!这正是我想要的!但还有一件事我还没解决。。。我想保留[假期]的旧功能,但是,我是VBA新手,无法真正使其正常工作…@dolib很乐意提供帮助。既然我的回答满足了你的问题,如果你能把它标记为已接受,我将不胜感激。你可以阅读更多信息。