我有一个 MS Excel 表,其中 A 列包含日期,B 列包含该日期的属性值。每个日期都有多个条目。例如,2022-10-02 有三个条目/行。我只想保留每个日期的最后一行。最后,我的意思是给定日期的三个条目的第三行。有 VBA 代码可以做到这一点吗?
最初的
A B
|------------|----|
1 | 10/20/2022 | 5 |
|------------|----|
2 | 10/20/2022 | 23 |
|------------|----|
3 | 10/20/2022 | 18 |
|------------|----|
代码之后
A B
|------------|----|
1 | 10/20/2022 | 18 |
|------------|----|
谢谢
答案1
答案2
使用数组公式筛选数据
使用反向公式过滤数据很简单,但自动删除行并确定适当的逻辑则复杂得多。我已经根据 进行了过滤order
(如您所愿),但是比较实际值date time
会是一种更可靠的方法来确定newest entry
而不是 ,因为order
可能会被意外更改,并且除非您添加某种 ,否则在缺少 的情况下无法恢复index
。
微软 Excel
Cell D2:
=SORT(UNIQUE(FILTER(A:A,(A:A<>"")*(A:A<>A1))),1)
Cell E2:
=BYROW(FILTER(D:D,D:D<>""),LAMBDA(d, INDEX(B:B,XMATCH(d, A:A,, -1))))
Google 表格
Cell D2:
=SORT(UNIQUE(A2:A),1,1)
Cell E2:
=BYROW(FILTER(D2:D,D2:D<>""),LAMBDA(d, INDEX(B:B,XMATCH(d, A:A,, -1))))
样本数据
A B C D E
|------------|-------|---|------------|------------|
1 | Duplicates | Value | | Unique | Last Value |
|------------|-------|---|------------|------------|
2 | 10/1/2022 | 1 | | 10/1/2022 | 111 |
|------------|-------|---|------------|------------|
3 | 10/20/2022 | 5 | | 10/20/2022 | 18 |
|------------|-------|---|------------|------------|
4 | 10/20/2022 | 23 | | 10/23/2022 | 23 |
|------------|-------|---|------------|------------|
5 | 10/20/2022 | 18 | | 10/27/2022 | 27 |
|------------|-------|---|------------|------------|
6 | 10/27/2022 | 27 | | | |
|------------|-------|---|------------|------------|
7 | 10/1/2022 | 11 | | | |
|------------|-------|---|------------|------------|
8 | 10/23/2022 | 23 | | | |
|------------|-------|---|------------|------------|
9 | 10/1/2022 | 111 | | | |
|------------|-------|---|------------|------------|