2015-03-31 146 views
1

我正在尝试创建一个自动化的电子表格,它将改变每周的日期,但也要提前2周。Excel中的日期逻辑

因此,它的时间表,教师可以预订房间。在顶部显示他们预订的周数,例如它会说 从2015年3月3日开始,而在其他的床单上增加7天到前一周的时间,以便它显示2周的高级在其他工作表

我想创建一些逻辑,以便当第一周结束时,所以id有一个日期变量,将检查第一周是否会结束,然后将设置第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 
+0

您是否希望** Week1 **始终为当前星期的*星期一*? – 2015-03-31 13:49:43

+0

这将是最好的方式是的,但由于有3张不同的星期,它将意味着转移所有的细胞数据,其中不是真正可行的id,就像它在一个周期中工作,以至于当第一周它将变成7第3周后的第2周,第2周结束后将成为第3周后的第7天,然后第1周将回到最早的一周等等 – pvtctrlalt 2015-03-31 13:57:08

+0

如果我可以上传图片但我没有足够的分数 – pvtctrlalt 2015-03-31 13:57:45

回答

1

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

基本上,我们使用您的原始日期设置日期,然后我们检查是否有任何日期是在那个时间之前 - 如果是的话,我们增加它并再次检查。那样,如果我们需要循环几周,它会继续骑自行车,直到它们都是最新的?

请给它一个镜头,让我知道如果这不是你所需要的,我会帮你解决它。

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

Week1变为2015年4月20日和其他人保持不变(我相信是如预期的)。如果我们推迟了两周以至于已经过去了(不应该在实践中发生),那么您将会明智地获得相同的抵消日期 - 仅仅是所有未来的抵消日期。

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 
+1

这看起来正是我所需要的。生病需要进行测试寿。非常感谢 – pvtctrlalt 2015-04-01 08:12:14