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。
你可以使用WORKDAY
function来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