【问题标题】:Excel function to calculate pairwise date differenceExcel函数计算成对日期差
【发布时间】:2016-11-18 15:33:48
【问题描述】:

我有一张包含公司所有员工的 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 年 1 月 20 日生病了,而菲尔没有生病。

现在,我想计算一年的病假天数。 我可以做类似的事情

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

那么需要做的是:

  1. 检查日期是否在正确的年份
  2. 成对计算连续所有日期的networkdays,这意味着 =SUM(NETWORKDAYS(B2;C2)) 2015 年和 =SUM(NETWORKDAYS(D2;E2);NETWORKDAYS(B3;C3)) 2016 年。

但它应该更动态地工作。我只想选择矩阵,例如每年 A1 至 I8,其余应自动计算。有人知道我该怎么做吗?

【问题讨论】:

    标签: excel excel-formula array-formulas


    【解决方案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 中。它应该可以工作。

    【讨论】:

      【解决方案2】:

      以下内容似乎很不守规矩:

      =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))
      

      或者,您可以编写一个宏来循环遍历数据在每个 FromTo 列之间添加额外的两列。 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)
      

      如果需要,可以隐藏这些新列。

      【讨论】:

        猜你喜欢
        • 2020-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多