在我的工作簿中,我有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),它将无效。
答案 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)