如何在一年中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