2016-11-18 50 views
0

我與我公司的所有員工都有一個Excel表。該列表還包括每位員工的病假日。我想計算每年的病假。Excel函數計算成對日期差異

我的excel表看起來像這樣(縮短的版本):

A  B   C   D   E   F   G  ... 
1 Name  From   To   From  To   From  To  ... 
2 Max  2015/06/15 2015/06/16 2016/08/17 2016/08/17 
3 Sarah 2016/01/20 2016/01/20 
4 Phil 
... 

說明:馬克斯病了兩次。首先從2015/06/15到2015/06/16,第二從2016/08/17到2016/08/17。每當他生病時,桌子向右擴展。莎拉只在2016/01/20生病,菲爾沒有生病。

現在,我想計算一年的病假。 我可以做類似

A  B 
10 2015 Sum of sick days in 2015 
11 2016 Sum of sick days in 2016 

所以需要做的事情是:

  1. 檢查,如果日期是在正確的連續兩年的所有日期NETWORKDAYS的
  2. 成對計算,即裝置 = SUM(NETWORKDAYS(B2; C2))爲2015年和 = SUM(NETWORKDAYS(D2; E2); NETWORKDAYS(B3; C3))爲2016年

但它應該更加動態。我只想選擇矩陣,例如每年A1到I8,其餘應自動計算。有人知道我能做到嗎?

回答

1

您可以使用下面的公式。 (在單元格B10

=SUMPRODUCT((YEAR($B$2:$N$8)=$A10)*(MOD(COLUMN($B$2:$N$8),2)=0)*(($C$2:$O$8-$B$2:$N$8)+1)) 

複製上述細胞爲B11貼上此它應該工作

0

下顯得桀驁:。

=IF(YEAR(C2)=A10,NETWORKDAYS(B2,C2))+IF(YEAR(G2)=A10,NETWORKDAYS(F2,G2))+IF(YEAR(K2)=A10,NETWORKDAYS(J2,K2))+IF(YEAR(C3)=A10,NETWORKDAYS(B3,C3))+IF(YEAR(G3)=A10,NETWORKDAYS(F3,G3))+IF(YEAR(K3)=A10,NETWORKDAYS(J3,K3))+IF(YEAR(C4)=A10,NETWORKDAYS(B4,C4))+IF(YEAR(G4)=A10,NETWORKDAYS(F4,G4))+IF(YEAR(K4)=A10,NETWORKDAYS(J4,K4)) 

另外,您既可以編寫一個宏循環通過數據在每個之間添加另外兩列列D2將爲

=IF(ISBLANK(C2),"",YEAR(C2)) 

並抄下來。 E2將是

=IF(ISBLANK(C2),"",NETWORKDAYS(B2,C2)) 

並複製下來。 E11將

=SUMIF(D2:D4,$A11,E2:E4) 

和對面I11和M11等副本可以那麼就

=SUM(C11:M11) 

這些新列可如果你需要隱藏。