excel - 根据年份创建包含工作日和每月日期的表
问题描述
我想做一个VBA来做以下事情:
- 填写表格中的两列:第一列是天数,第二列是日期,它只需要整个月的工作日(周一至周五)
- 这取决于两个单元格中的两个输入(年、月)
- 当和单元格包含星期五作为一天并从星期一重新开始时,两个单元格之间的框架必须是粗体。
你能帮我写代码吗?
解决方案
您不需要 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”以将它们显示为工作日。如果单元格 = 星期五,则使用条件格式添加边框
推荐阅读
- oracle - 以 GB 为单位的数据库大小,包括使用空间和可用空间 Oracle DB
- mysql - MySQL 上的类似 Oracle 查询
- css - 如何使网格行和列动态化?
- .net - .Net 核心内存使用情况
- asp.net-mvc - 在 Razor 页面中绑定多个列表项
- angular - PrimeNG 表 - 如何清除代码中的文本过滤器和 p 表
- powershell - Powershell 在远程电脑上执行 some.exe 并输入多行文本
- docker - Traefik 配置未使用 AT&T 连接到手机
- python - 使用 PythonScript 将 Maya 显示层设置为关闭
- numpy - 如何在纯 Python 中创建直方图?