我在Excel2007中有大约6500多行的列表。每行代表一个人在开始日期和结束日期的残疾假期。如果没有结束日期,则结束日期设置为12/31/9999。一些值的样本如下:
Workers Compensation 4/7/2009 12/31/9999
Workers Compensation 5/21/2009 12/31/9999
Short Term Disability 8/27/2009 10/7/2009
Short Term Disability 6/22/2009 7/15/2009
Short Term Disability 1/21/2009 10/4/2009
Short Term Disability 4/8/2009 6/14/2009
Short Term Disability 6/19/2009 10/5/2009
Short Term Disability 8/19/2009 12/31/9999
Short Term Disability 5/30/2009 6/18/2009
Short Term Disability 7/9/2009 7/20/2009
第一个日期是他们休假的日期;第二个日期是他们从休假返回的日期。
我试图突破每一行,以便我可以计算该人休假的每个工资期的天数。我们每两周支付2009年第一笔工资,涵盖08年12月14日至2008年12月27日期间,之后每两周增加一次(工资#2涵盖12/28/08至2009年1月10日等)
因此,作为一个例子,我知道第一行数据涵盖了200909到当前支付期间的支付期(我们目前处于支付期200924)。我也知道200910至200924期间应该有10天作为计算数字(因为每个工资有10个工作日),并且200909的支付期计数应该是2(因为该支付期间有2个工作日与时间重叠员工休假。
我想用一个公式来评估它,而不是编写代码。有任何想法吗?提前谢谢。
答案 0 :(得分:0)
在这里,我做了几个假设:
我使用了几个单元来解决这个问题:
小区D1确定休假是否正在进行。单元格G1计算开始和结束支付期间之间的支付期间数。 Cell H1包含您寻求的答案。
您可以将这些单元格复制到其他行。另外,如果可行的话,我会考虑用TODAY()代替C列12/31/99。
<强>已更新强>
我注意到如果没有指定结束日期,那么与今天的支付期限相对应的列的值应该是10.此外,我没有确保在第一个支付期间,假期属于,I应该返回该人在该期间休假的天数。考虑到上述因素以及所提供的说明,我提出了以下解决方案。
我做出与上述相同的假设,只是假设行从第2行开始,假设2被替换。
我定义了以下名称:
我定义了以下单元格并复制了所需的行数:
然后我为第一行定义了以下单元格:
然后,我将单元格G1复制到列中,以表示我想表示的付费期。当然,单元格F1和右侧的每个后续单元格指定列表示的支付期间的开始日期。
我最后定义了以下单元格并将其复制到右边的多列中,因为有付费期(除了最后一个付款期限 - 见下文),以及复制到尽可能多的列有数据的行:
在上一个支付期间,我做了以下事情。假设列AD保存最后一个支付期的数据:
然后我复制了与数据一样多的行。
答案 1 :(得分:0)
输入以下公式
G1:12/26/2008
G2:=G1+14
并填写第28行。然后
D1:=IF(C1=DATE(9999,12,31),TODAY(),C1)
E1:=NETWORKDAYS(B1,INDEX($G$1:$G$28,MATCH(B1+13,$G$1:$G$28)))
F1:=10-NETWORKDAYS(D1+1,INDEX($G$1:$G$28,MATCH(D1+14,$G$1:$G$28)))
并根据需要填写。然后
H1:{=SUM(($B$1:$B$10<=G1-14)*($D$1:$D$10>G1))}
I1:{=SUM(($B$1:$B$10<G1)*($B$1:$B$10>=G1-14)*($E$1:$E$10))}
J1:{=SUM(($D$1:$D$10>G1-14)*($D$1:$D$10<=G1)*($F$1:$F$10))}
K1:=SUM(H1*10,I1,J1)
请注意,括号括起来的公式需要输入数组 - 不要输入括号,而是使用control + shift + enter提交公式,而不是只输入。
显然,如果您愿意,可以将一堆列组合起来以简洁起见。
答案 2 :(得分:0)
数据透视表方法。输入这些公式
G1:12/26/2008
G2:=G1+14
并填写第28行。然后
A14: Date
A15: 1/21/2009
A16: =A15+1
B14: Count
B15: {=SUM(($B$1:$B$10<=A15)*(WEEKDAY(A15)<7)*(WEEKDAY(A15)>1)*($D$1:$D$10>=A15))}
C14: Week
C15: =INDEX($G$1:$G$28,MATCH(A15+13,$G$1:$G$28))
将A,B和C公式填充到第321行,以便在11/23/09停止(如果需要,可以更远)。
选择A14:C321并创建一个数据透视表。将'Week'放在行区域中,将'Count'放在数据区中。