Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 8236|回复: 2

[已解决]如何用vba表示前一个工作日的日期

[复制链接]
发表于 2014-12-5 18:06 | 显示全部楼层 |阅读模式
本帖最后由 含月化烛 于 2014-12-10 14:51 编辑

用vba将报表的名称自动变为前一个工作日的日期,应该怎么表示?
       我之前都是自动变为前一天的日期,用
       Format(Now()-1, "yyyy-m-d")
    这样表达,但是假如12月8号是周一,我需要做上周五的报表,名称也自动定义为上周五的时间,即“报表12-5”,应该怎么表示呢?
      我只知道在excel中可以用workday()这个函数。

最佳答案
2014-12-5 18:37
  1. Function workday(dat As Date) As Date
  2.     Select Case dat Mod 7
  3.          Case 1
  4.              workday = dat - 2
  5.          Case 2
  6.              workday = dat - 3
  7.          Case Else
  8.              workday = dat - 1
  9.     End Select
  10. End Function
复制代码
可以自定义函数嘛

Format(Now()-1, "yyyy-m-d")改成 format(workday(now()),"yyyy-m-d"
发表于 2014-12-5 18:37 | 显示全部楼层    本楼为最佳答案   
  1. Function workday(dat As Date) As Date
  2.     Select Case dat Mod 7
  3.          Case 1
  4.              workday = dat - 2
  5.          Case 2
  6.              workday = dat - 3
  7.          Case Else
  8.              workday = dat - 1
  9.     End Select
  10. End Function
复制代码
可以自定义函数嘛

Format(Now()-1, "yyyy-m-d")改成 format(workday(now()),"yyyy-m-d"
回复

使用道具 举报

发表于 2014-12-5 18:46 | 显示全部楼层
来个简单的判断
    Dim x As Date
    If Date Mod 7 = 2 Then
        x = Date - 3
    Else
        x = Date - 1
    End If

回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-12 11:42 , Processed in 0.188327 second(s), 5 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表