期望行为
根据应用于具有共享值的行的条件逻辑显示特定值。
我尝试过的方法
我是一名全栈开发人员(MongoDB/Node/JS),不习惯在 Excel 中解决数据问题。
因此,我不确定可用于解决这个特定问题的构造(例如数组,变量,循环等)。
(或者即使在 Excel 中可以实现这种复杂性)。
但是,这就是我想要实现的——其中IMPORT or DELETE
列值是根据下面定义的逻辑来计算的。
员工编号 | 科目编号 | 完成日期 | 导入或删除 |
---|---|---|---|
11111111 | 高级 | 2021 年 1 月 5 日 | 进口 |
11111111 | 2020 年 1 月 10 日 | ||
22222222 | 2021 年 1 月 11 日 | ||
22222222 | 高级 | 2021 年 1 月 10 日 | 删除 |
22222222 | 高级 | 2015 年 1 月 10 日 | 删除 |
33333333 | 高级 | 2021 年 1 月 30 日 | 进口 |
33333333 | 高级 | 2020 年 1 月 30 日 | 进口 |
33333333 | 2000 年 1 月 30 日 | ||
44444444 | 高级 | 2022 年 1 月 1 日 | 进口 |
55555555 | 高级 | 2021 年 1 月 1 日 | 进口 |
55555555 | 高级 | 2020 年 1 月 1 日 | 进口 |
66666666 | 高级 | 2019 年 1 月 1 日 | 删除 |
Reason for IMPORT or DELETE value:
1] 11111111 - IMPORT - because it is newer than existing record and after 01/01/2020
2] 22222222 - DELETE - because it is older than existing record
3] 22222222 - DELETE - because it is older than existing record
4] 33333333 - IMPORT - because it is newer than existing record and after 01/01/2020
5] 33333333 - IMPORT - because it is newer than existing record and after 01/01/2020
6] 44444444 - IMPORT - because there is no existing record and it is after 01/01/2020
7] 55555555 - IMPORT - because there is no existing record and it is after 01/01/2020
8] 55555555 - IMPORT - because there is no existing record and it is after 01/01/2020
9] 66666666 - DELETE - because there is no existing record but it is before 01/01/2020
电子表格信息
电子表格数据按以下方式自定义排序:
- 员工编号(从小到大)
- 完成日期(从最新到最旧)
没有值的记录Course Code
是现有记录。
确实有价值的记录Course Code
是新记录。
具有相同内容的记录被视为“重复”记录Employee Number
。
上述数据集有意涵盖了各种场景。
数据集大小可能很大,例如~1,000 行。
日期格式为dd/mm/yyyy
。
伪代码
目标是展示IMPORT
或DELETE
创造新记录。
以下是对一些伪代码的猜测。
您可能希望忽略这种方法,因为它可能朝着错误的方向发展。
01
对每组重复项(或单个用户记录)进行“分组”,例如:
[ [11111111], [22222222], [33333333], [44444444], [55555555], [66666666] ]
02
确定“员工编号组”中的某条记录是否为现有记录
03
如果组中的一个值是现有记录,则对比现有记录和 01/01/2020 更新的新记录显示“IMPORT”,其余记录显示“DELETE”。
04
否则,如果组中的任何值都不是现有记录,则对 2020/01/01 之后的新记录显示“IMPORT”,对其余记录显示“DELETE”。
答案1
一种可能的解决方案是将此行为作为 Visual Basic 中的宏来实现。这提供了一种遍历行/列来实现所需行为的方法。可以在视图>宏>显示宏>创建中编写宏