excel中的日期逻辑

时间:2015-03-31 13:35:14

标签: excel vba date excel-vba

我正在尝试创建一个自动电子表格,它会改变每周的日期,但也会提前2周。

所以它是一个教师可以预订房间的时间表。在顶部显示他们预订的那一周,例如它会说 从2015年3月30日开始的一周以及其他工作表上的它将在前几周的时间内添加7天,以便在其他工作表上显示提前2周

我想创建一些逻辑,以便在第1周结束时,所以id有一个日期变量,可以检查第1周是否结束,然后将在第3周后的第1周到第7天进行设置设置,然后将第2周和第3周推进一周,我不想要

你能帮我弄清楚需要什么样的逻辑来实现这个目的吗?

Sub SetDate()
Dim Week1 As Date
Dim Week2 As Date
Dim Week3 As Date
Dim Week4 As Date


Week1 = DateValue("30 / 3 / 2015")
Week2 = DateAdd("d", 7, Week1)
Week3 = DateAdd("d", 7, Week2)
Week4 = DateAdd("d", 7, Week3)

Worksheets("Week1").Range("B4").Value = Week1
Worksheets("Week2").Range("B4").Value = Week2
Worksheets("Week3").Range("B4").Value = Week3

End Sub

1 个答案:

答案 0 :(得分:1)

我不确定我是否正确理解这个问题,但也许是这样的?

基本上,我们使用您的原始日期设置日期,然后检查是否有任何日期在此之前 - 如果是,我们递增并再次检查。这样,如果我们需要循环几周,它会继续骑自行车,直到它们全部流动?

请试一试,如果这不是您需要的,请告诉我,我会帮您解决。

我通过将日期设置为2015年3月30日,2015年4月6日和2015年4月13日进行了测试

第1周成为2015年4月20日,其他人保持不变(我相信这是预期的)。如果我们回滚几周以便已经过去了2(在实践中不应该发生),那么你将获得相同的偏移日期 - 只是所有未来的偏移。

Sub SetDate()
Dim Week1 As Date
Dim Week2 As Date
Dim Week3 As Date
Dim Week4 As Date

Week1 = Worksheets("Week1").Range("B4").Value
Week2 = Worksheets("Week2").Range("B4").Value
Week3 = Worksheets("Week3").Range("B4").Value

Dim FoundOldDate

Do
FoundOldDate = False
If Week1 - Date < 0 Then
    Week1 = DateAdd("d", 7, Week3)
    FoundOldDate = True
End If
If Week2 - Date < 0 Then
    Week2 = DateAdd("d", 7, Week1)
    FoundOldDate = True
End If
If Week3 - Date < 0 Then
    Week3 = DateAdd("d", 7, Week2)
    FoundOldDate = True
End If
Loop While FoundOldDate

Worksheets("Week1").Range("B4").Value = Week1
Worksheets("Week2").Range("B4").Value = Week2
Worksheets("Week3").Range("B4").Value = Week3

End Sub