楼主: nkxls
17531 6

求Excel VBA 程序:已知开始日期、工作日,计算到期日期的函数 [推广有奖]

  • 0关注
  • 2粉丝

VIP

已卖:2份资源

院士

35%

还不是VIP/贵宾

-

威望
0
论坛币
3637 个
通用积分
29.0889
学术水平
12 点
热心指数
14 点
信用等级
12 点
经验
33055 点
帖子
671
精华
0
在线时间
5253 小时
注册时间
2009-9-20
最后登录
2025-9-1

楼主
nkxls 发表于 2010-7-27 15:20:37 |AI写论文
50论坛币
求程序:
已知项目开始日期、工作日天数,计算到期日期的函数,其中不包括星期六,星期天,与十一,请大虾帮忙!

关键词:EXCEL xcel exce 工作日 cel 程序 EXCEL VBA 函数 工作日

沙发
gatesin 发表于 2010-7-27 18:06:51
用函数就可以实现

藤椅
gatesin 发表于 2010-7-27 18:17:50

WORKDAY

用途:返回某日期(起始日期)之前或之后相隔指定工作日(不包括周末和专门指定的假日)的某一日期的值,并扣除周末或假日。

语法:WORKDAY(start_date,days,holidays)

参数:Start_date 为开始日期;Days 为Start_date 之前或之后不含周末及节假日的天数;Days 是正值将产生未来日期、负值产生过去日期;Holidays 为可选的数据清单,表示需要从工作日历中排除的日期值(如法定假日或非法定假日)。此清单可以是包含日期的单元格区域,也可以是由代表日期的序列号所构成的数组常量。日期有多种输入方式:带引号的文本串(如"1998/01/30")、序列号(如1900 日期系统时的35825表示1998 年1 月30 日)或其他公式或函数的结果(例如DATEVALUE("1998/1/30"))。


板凳
hbcnc001 发表于 2010-7-27 22:29:37
到期日使用函数datedif()
DATEDIF(start_date,end_date,unit)

Start_date 为一个日期,它代表时间段内的第一个日期或起始日期。日期有多种输入方法:带引号的文本串(例如 "2001/1/30")、系列数(例如,如果使用 1900 日期系统则 36921 代表 2001 年 1 月 30 日)或其他公式或函数的结果(例如,DATEVALUE("2001/1/30"))。有关日期系列数的详细信息,请参阅 NOW。

End_date 为一个日期,它代表时间段内的最后一个日期或结束日期。

Unit 为所需信息的返回类型。  
Unit        返回
"Y"        时间段中的整年数。
"M"        时间段中的整月数。
"D"        时间段中的天数。
"MD"        start_date 与 end_date 日期中天数的差。忽略日期中的月和年。
"YM"        start_date 与 end_date 日期中月数的差。忽略日期中的日和年。
"YD"        start_date 与 end_date 日期中天数的差。忽略日期中的年。

报纸
gatesin 发表于 2010-7-30 11:06:28
楼上的,人家是要计算到期的日期,而不是返回两个日期之间的间隔

地板
twins2twins 发表于 2010-8-3 02:28:29
刚开始学vba,函数还不会写,代码也不是很完善,只是给个思路你参考一下
Sub endday()
    Dim i As Integer
    Dim j As Integer
    Dim wd As Integer
        
    i = 0
    j = 0
    Do Until i = 工作天数
          wd = Application.Weekday(开始日期+ i + j, 2)
         If wd = 6 Or wd = 7 Then
             j = j + 1
        Else
            i = i + 1
        End If
    Loop
结束日期= 开始日期 + i + j - 1
End Sub

这个过程只考虑了周六周日,其他节假日另外添加到条件就是了。

7
241king 发表于 2014-12-18 07:40:20
[loveliness]

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-12 11:37