Excel - 根据ID,开始日期和顺序(参考)自动填充日期列

时间:2018-04-12 13:08:01

标签: excel excel-formula

在我的工作簿中,我有4列。列A是ID,列B是生效日期(开始日期),列C是序列(它是来自列A和B的重复数据的参考号),最后是列D,结束日期。我想匹配A,B和C列,看看它是否是同一员工当天的最后一条记录(由ID确定)。

例如(我想要的样本结果):

 A        B        C        D
1001  12/03/2018   1    12/03/2018
1001  12/03/2018   2    12/03/2018
1001  12/03/2018   3    12/03/2018
1001  12/03/2018   4    31/12/2018
1001  13/03/2018   1    13/03/2018
1001  13/03/2018   2    31/12/2018
1001  14/03/2018   1    31/12/2018
1002  12/03/2018   1    12/03/2018
1002  12/03/2018   2    31/12/2018
1002  13/03/2018   1    31/12/2018

如您所见,员工ID 1001在12/03/2018中有4条记录,因此A列和B列将重复4次,因此我在C列中添加以确定首先在表单中输入哪条记录。然后,前3个记录的结束日期(列D)将与列B具有相同的日期,但最后一个记录(序列号4)将具有结束日期31/12/2018。我需要通过比较A,B和C列来自动填充D列。

以前,我发现了像这样的IF函数

=IF(COUNTIF(A:A,$A2)=$C2,DATEVALUE("31/12/2018"),$B2)

如果ID 1001在序列4处停止但是如果为ID 1001插入新日期(例如,1001日期为13/03/2018),它将无效。

2 个答案:

答案 0 :(得分:0)

=IF(SUM(IF(A:A&B:B=$A2&$B2,1))=$C2,DATEVALUE("31/12/2018"),$B2)

这是一个数组公式,在 Ctrl + Shift + 输入时仍在公式栏中验证。

SUM(IF(A:A&B:B=$A2&$B2,1))被用作COUNTIFS()的等价物,因为我需要将日期值附加到您的ID以生成每天的唯一值,COUNTIFS()仅在范围内运行比阵列。

A1&B1是一种实现CONCATENATE(A1,B1)将字符串值绑定在一起的懒惰方式,我们为IF()逻辑的两边执行此操作,以便我们可以评估数组:

{"100143171";"100143171";"100143171";"100143171";"100143172";"100143172";"100143173";"100243171";"100243171";"100243172"}

而不仅仅使用A:A:

{1001;1001;1001;1001;1001;1001;1001;1002;1002;1002}

我们需要将其作为数组公式的原因是SUM()分别评估来自IF()的所有返回值。理解公式分块的最佳方法是在突出显示该部分时使用F9。您需要将整个列的结果缩小,因为它需要适合公式栏。

答案 1 :(得分:0)

如果您不想使用数组公式,可以始终使用=COUNTIFS()

=IF(COUNTIFS(A:A,A2,B:B,B2)=C2,DATEVALUE("31/12/2018"),B2)