我已经尝试破解了几天,因为我充其量是一名出色的中级人才。而且我正在努力。
基本上,我有3列数据:一列带休假时间,下一列带开始日期,最后一列带结束日期。
我需要能够正确分析和分配每个日历月的工作日数。然后,将在摘要页面上对其进行“摘要”。我发现了一种使我接近,极其接近的方法(这要感谢另一个stackoverflow帖子)。以下是使我接近的公式:
=MAX(0,MIN(IF($W1592="",TODAY(),$W1592),EOMONTH(DATEVALUE(AB$3&"-17"),0))-MAX($V1592,DATEVALUE(AB$3&"-17"))+1)
问题在于,有些请假少于一天全天。有时可能只有2.5小时。我需要公式说明,如果请假开始日期和结束日期在同一个月,则返回请假时间的计算/7.5(= $ U4 / 7.5)
我尝试了几种不同的方法,但是没有任何效果。感谢您的协助。
Snip of worksheet showing data and how it should be allocated
答案 0 :(得分:1)
使用
A2:C9 = <your sample data>
我放了:
L1 = Sep-2017
M1 = Oct-2017
N1 = Nov-2017
O1 = Dec-2017
P1 = Jan-2018
Q1 = Feb-2018
R1 = Mar-2018
S1 = Apr-2018
T1 = May-2018
U1 = Jun-2018
V1 = Jul-2018
W1 = Aug-2018
X1 = Sep-2018
Y1 = Oct-2018
*all in proper excel date format
L2
=IF(AND(AND(MONTH(L$1)=MONTH($B2),YEAR(L$1)=YEAR($B2)),AND(MONTH(L$1)=MONTH($C2),YEAR(L$1)=YEAR($C2))),$A2/7.5,IF(AND(AND(MONTH(L$1)=MONTH($B2),YEAR(L$1)=YEAR($B2)),MONTH($B2)<>MONTH($C2)),EOMONTH($B2,0)-$B2,IF(AND(AND(MONTH(L$1)=MONTH($C2),YEAR(L$1)=YEAR($C2)),MONTH($B2)<>MONTH($C2)),DAY($C2),IF(AND(AND(MONTH(L$1)<>MONTH($C2),MONTH($B2)<>MONTH($C2),MONTH(L$1)<>MONTH($B2)),AND(L$1>$B2,L$1<$C2)),DAY(EOMONTH(L$1,0)),""))))
并将其拖动到Y9
最后
L10 =SUM(L2:L9)
将其拖动到Y10。
因此,您的“每个日历月的工作日数”将在L10:Y10中。
我认为这应该可以帮助您。如果您需要帮助,请发表评论。 (:
+ ---------- [算法信息] ----------- +
如果是L2,则崩溃:
r = a = b
=IF(AND(AND(MONTH(L$1)=MONTH($B2),YEAR(L$1)=YEAR($B2)),AND(MONTH(L$1)=MONTH($C2),YEAR(L$1)=YEAR($C2))),$A2/7.5,"")
r = a,a!= b
=IF(AND(AND(MONTH(L$1)=MONTH($B2),YEAR(L$1)=YEAR($B2)),MONTH($B2)<>MONTH($C2)),EOMONTH($B2,0)-$B2,"")
r = b,a!= b
=IF(AND(AND(MONTH(L$1)=MONTH($C2),YEAR(L$1)=YEAR($C2)),MONTH($B2)<>MONTH($C2)),DAY($C2),"")
r!= a!= b
=IF(AND(AND(MONTH(L$1)<>MONTH($C2),MONTH($B2)<>MONTH($C2),MONTH(L$1)<>MONTH($B2)),AND(L$1>$B2,L$1<$C2)),DAY(EOMONTH(L$1,0)),"")
+ ------- [以前的帖子-已存档] ------- +
指的是:“如果请假的开始日期和结束日期在同一个月,则返回请假时间的计算/7.5(= $ U4 / 7.5)”
=if(month(<startDate>)=month(<endDate>), $U4/7.5, <yourOriginalFormula>)