首页 > 解决方案 > 根据年份创建包含工作日和每月日期的表

问题描述

我想做一个VBA来做以下事情:

你能帮我写代码吗?

标签: excelvba

解决方案


您不需要 VBA,您可以结合使用公式和条件格式来做到这一点:

假设 Month 在 A1 中,Year 在 B1 中,那么 C1 中的以下公式将为您提供月份和年份的第一天:

   =DATEVALUE("1/"&$A$1&"/"&$B$1)

这适用于设置为使用 dd/mm/yyyy 作为日期格式的系统,美国人需要更改顺序以便他们使用 DATEVALUE($A$1&"/1/"&$B$1)

函数 WEEKDAY() 返回一个 1 到 7 之间的数字,对应于星期几,其中 1 = 星期日。因此,我们将其应用于单元格 D1 中的函数

 =WEEKDAY(C1)

现在我们转移到我们希望列表开始的位置(我假设 A2)并输入

  =IF(D1=1,C1+1,IF(D1=7,C1+2,C1))

这将是指定月份第一个工作日的日期 在 A3 中,我们现在输入

 =IF(WEEKDAY(A2)=6,A2+3,a2+1)

这就是说,如果上面的行是星期五,则在下星期一进行,否则在第二天进行。现在我们唯一需要做的就是在月底停止它的显示:所以我们用一个 If 语句包装它以显示 "" 如果日期将在该月的最后一天之后

=IF(A2="","",IF(DAY(A2)=DAY(DATEVALUE("1/"&$A$1+1&"/"&$B$1)-1),"",IF(WEEKDAY(A2)=6,A2+3,A2+1)))

现在将其复制到第 25 行。这些是您的日期 - 现在将数字格式设置为自定义设置“dddd”以将它们显示为工作日。如果单元格 = 星期五,则使用条件格式添加边框


推荐阅读