如何在一年中find并显示所有星期六,但是如果在Excel中这一周下降,则显示每个月的第一天?

这一个正在把我拉上一堵墙,所以我希望有人能帮上忙。 这是我想要做的。

我想dynamic显示每个星期六从2014年1月1日开始。 如果在任何时候,这个月的第一个月都是在前一个星期天和之后的星期六之间发生的,那么我想先展示那个月的第一个,然后是这个星期的结尾。 我有一个例外,那是1/1。 这里有些例子。 以1/1/2014:

前一个星期天到2014年1月1日是12/29/2013。 接下来的星期六是四分之一,那一周是1/1。 不过,我想从一月份的第一个星期六开始,因为这是今年的第一周。 那么,以下是一月份的情况:

2014年1月1日1/11/2014 1/18/2014 1/25/2014

现在,因为下个星期六又是新月,所以我想在1月底展示下一个星期六,就像下面这个星期六一样:

2014年1月1日1/11/2014 1/18/2014 1/25/2014 1/31/2014 2/1/2014

这里是二月到三月,这是相似的:

2/1/2014 2/8/2014 2/15/2014 2/22/2014 2/28/2014 3/1/2014

这些是一致的,在这两个月结束后的下个星期六恰好是下个月的第一个。 虽然三月到四月是不同的。 考虑:

3/1/2014 3/8/2014 3/15/2014 3/22/2014 3/29/2014 3/31/2014 4/5/2014

在这里,三月底在两个月之间…

我希望这是明确的,因为它让我的大脑受到伤害。

谢谢阅读!

如果你想要一个长的date列表,包括所有的星期六和月底的date,试试这个:

将年份放在A1中,例如2014年,然后在A3使用该公式作为今年的第一个周六

=DATE(A1,1,8)-WEEKDAY(DATE(A1,1,1))

然后在A4您可以使用此公式来获取每个连续的星期六或月末date

=MIN(A3+8-WEEKDAY(A3+1),EOMONTH(A3+1,0))

根据需要复制下来

当我第一次读到这个时,我以为你在问一个VBA的例子…我现在意识到你不是。 不过,我已经在VBA中写了一些东西来完成这个任务,所以我决定发帖。 如果你有兴趣,请看下面。

 Option Explicit Sub ListDates() Dim dt As Date Dim sDate As Date Dim eDate As Date Dim i As Long sDate = #1/1/2014# eDate = #12/31/2014# i = 1 'Loop through the dates. For dt = sDate To eDate 'If the date is at the end of the month, print to cell. If Month(dt) <> Month(DateAdd("d", 1, dt)) Then Cells(i, 1) = dt: i = i + 1 'If the date is a Saturday, print to cell. If WeekdayName(Weekday(dt)) = "Saturday" Then Cells(i, 1) = dt: i = i + 1 Next dt End Sub