Excel中的date逻辑

我正在尝试创build一个自动化的电子表格,每周更改date,但也要提前2周。

所以老师可以预定房间的时间表。 在顶部,它显示了他们预定的那个星期,例如,它会说周开始于2015年3月3日,而在其他的床单上,它会在前一周的时间里增加7天,从而显示2周其他床单

我想创build一些逻辑,以便当第一周结束,所以ID有一个datevariables,将检查是否第一周结束,然后将设置第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 

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

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

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

我通过将date设置为3/30/2015,4/6/2015和4/13/2015进行testing

第一周成为4/20/2015,其他人保持不变(我相信这是预期的)。 如果我们把这两个星期推回去,以至于已经过去了(不应该在实践中发生),那么明智的date就会得到相同的抵消 – 只是所有未来的抵消。

 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