Excel职责清单

时间:2016-08-23 06:10:23

标签: excel excel-vba excel-formula vba

我正在努力为我的班级创建一个职责名册。

背景: 我们目前有工作日和周末的职责。平日工作的人得1分,而周末做的人2分。

问题: 我想知道如何在excel中编写表格,以便每当有人在工作日执行任务时,它会认出该人获得1分。

我的名单是这样的:(其中A,B,C是行引用)

A名称|积分|日期职责已完成|日期职责已完成|日期职责已完成|

B名称|积分|日期职责已完成|日期职责已完成|日期职责已完成|

C名称|积分|日期职责已完成|日期职责已完成|日期职责已完成|

我尝试过以下代码,检查日期是否为工作日,并计算单元格是否为:

{=SUM(--(if(A:A<>", WEEKDAY(A:A)={2,3,4,5,6}))}

对于周末,我创建了一个单独的列来计算周末,但之后我会将这些点加倍。然后在名为 Points 的列中,它将是工作日和周末点的总和。

不幸的是,上面的公式不起作用,因为我不断收到#NA#VALUE错误,最后我无法完成名单。

2 个答案:

答案 0 :(得分:1)

您可以这样做,其中名称在A列中,点公式在B列中,日期在C到ZZ列中。因此第2行(第1行中的列标题)可能如下所示:

  

2 约翰| 6 | 2016年6月25日| 2016年6月26日| 2016年6月27日| 2016年6月28日|

计算B列中的点的公式如下所示:

=SUMPRODUCT(2-NETWORKDAYS(C2:ZZ2+0,C2:ZZ2+0),--ISNUMBER(C2:ZZ2))

只需将其复制到其余行。

它的工作原理如下:

  

2 - NETWORKDAYS(C2:ZZ2 + 0,C2:ZZ2 + 0)

将产生2和1的数组。 1表示工作日,2表示周末或空白单元格。添加0会将范围转换为数组。 NETWORKDAYS无法使用范围。

  

- ISNUMBER(C2:ZZ2)

将创建一个1和0的数组( - 将true转换为1,将false转换为0)。如果单元格具有日期(数字),则为1,空白单元格为0。我们需要这个从第一个数组中丢失空白单元格(2)的结果。

SUMPRODUCT将乘以两个数组并对结果求和。

答案 1 :(得分:1)

假设您有如下图所示的数据,其中

  • Column A有姓名
  • 积分应以Column B
  • 计算
  • Column C, D, E包含职责日期

enter image description here

在单元格B2中输入以下公式,然后根据需要拖放/复制。

=SUM(IF(((WEEKDAY(C2:E2)=7)+(WEEKDAY(C2:E2)=1))>0,2,1))

这是一个数组公式,按 Ctrl + Shift + Enter 进行组合。