Excel公式为每月MF和TS

我必须build立一个报告,其中有两个不同的date列; 前一个月的MF,以及上个月的TS。

如果在AI列有一个从上个月的所有天的列表

A 1 | 8/1/2013 | 2 | 8/2/2013 | ... 31 | 8/31/2013 | 

有没有一个公式可以用在B和C列来获得必要的date?

那么,当然,您可以使用此公式来避免date之间的空白单元格:

=IFERROR(INDEX($A$1:$A$31,SMALL(IF(MOD($A$1:$A$31,7)>1,ROW($A$1:$A$31,9^99),ROW())),"")

这个公式(星期一到星期五)需要用Ctrl + Shift + Enter来调用。 在完成第一个date之后,您可以拖动到底部。

对于星期二到星期六的那个,时间稍长。

=IFERROR(INDEX($A$1:$A$31,SMALL(IF(((MOD($A$1:$A$31,7)>2)+(MOD($A$1:$A$31,7)=0))>0,ROW($A$1:$A$31),9^99),ROW())),"")

但与此同时,您必须使用Ctrl + Shift + Enter调用此函数,否则您将无法获得其他date(您将获得#NUM!而不是其他date)。

而不是在列A中inputdate,你可以做这样的事情:

上个月的星期几

在单元格B1中是这个公式(格式为m / d / yyyy):

 =TODAY() 

在单元格B2中是这个公式(格式为mmmm):

 =DATE(YEAR(B1),MONTH(B1)-1,1) 

在单元格A5中是这个公式(格式为m / d / yyyy):

 =IF(WEEKDAY(B2,2)<6,B2,B2+1+(WEEKDAY(B2+1,2)>5)) 

在单元格A6中复制到A37是此公式(格式为m / d / yyyy):

 =IF(NETWORKDAYS(B$2,EOMONTH(B$2,0))>COUNT(A$5:A5),A5+1+2*(WEEKDAY(A5+1,2)>5),"") 

在单元格B5中是这个公式(格式为m / d / yyyy):

 =IF(AND(WEEKDAY(A5,2)<>{1,7}),B2,B2+1+(OR(WEEKDAY(B2+1,2)={1,7}))) 

最后,在单元格B6中复制到B37是这个公式(格式为m / d / yyyy):

 =IF(B5="","",IF(MONTH(B5+1+OR(WEEKDAY(B5+1,2)={1,7})*2)<>MONTH(B$2),"",B5+1+OR(WEEKDAY(B5+1,2)={1,7})*2)) 

现在,MF和TS的date会自动更新,每当你进入一个新的月份。 如果你想手动控制它,你可以在单元格B1中input一个月的date,如8/1/2013。 然后,这些配方将照顾其余的,并将从七月份开始适当的date。

你可以使用WORKDAYfunction来WORKDAY这一点:

鉴于A1已经在A1上个月的第一个在B1中join了这个公式

=WORKDAY(A$1-1,1)

…..和C1中的这一个

=WORKDAY(A$1-2,1)+1

然后在B2 ….

=IF(B1="","",IF(MONTH(WORKDAY(B1,1))=MONTH(A$1),WORKDAY(B1,1),""))

和C2

=IF(B1="","",IF(MONTH(WORKDAY(B1-1,1)+1)=MONTH(A$1),WORKDAY(B1-1,1)+1,""))

并将后两个公式复制到第23行

当一个月中的MF天数less于23天或TS天数时,最低的单元格将显示为空白。

如果您想排除列出的假期date,也可以使用WORKDAY