如何删除范围 Google 电子表格中的所有其他重复项
How to remove all other duplicates in range Google Spreadsheets
我需要以有点复杂的方式删除重复项。对于选定的行,我需要删除所有其他重复项,对于其他行,我需要保留最早的条目。
我在想什么(所选行:|史蒂夫|晚上10点|:
- 删除史蒂夫条目以外的重复条目(下午 4 点和下午 1 点)
- 按时间排序
- 获取唯一值
Table before:
| Steve | 10pm |
| Mike | 8pm |
| Steve | 4pm |
| Joe | 6pm |
| Mike | 3pm |
| Steve | 1pm |
Ex1:
Selected: | Steve | 4pm |
| Steve | 4pm |
| Joe | 6pm |
| Mike | 3pm |
Ex2
Selected: | Steve | 10pm |
| Steve | 10pm |
| Joe | 6pm |
| Mike | 3pm |
Ex3:
Selected: | Steve | 1pm |
| Joe | 6pm |
| Mike | 3pm |
| Steve | 1pm |
编辑:2016 年 12 月 19 日 12:02am
我找到了我的特定问题的解决方案。下面的答案对于删除重复项是正确的。我能够成功地找出一个位置。然而,我刚刚意识到,这不是解决我遇到的更大问题的正确方法...
=MATCH(B2,unique(INDEX(SORT(sort({query(B2:C, "select B, min(C) where B <> '" &B2 & "' and B <> '' group by B label min(C) ''", 0); B2:C2}, 2, false),2,1 ),0,1)),0)
比如说,您的数据在 A:B 列中,selected(不知何故?)行已被复制到 C1:D1。 (无论您的 selection 方法是什么,您都应该能够使 selected 行出现在某处)。那么一个可能的策略是:
- 使用
query
到select所有non-Steves,为每个选择最早的时间。
- 将 selected 行添加到结果中
- 根据需要对整个内容进行排序。
这是我的做法;查询范围从第二行开始以避免(可能)headers。
=sort({query(A2:B, "select A, min(B) where A <> '" & C1 & "' and A <> '' group by A label min(B) ''", 0); C1:D1}, 2, false)
与换行符相同:
=sort({
query(A2:B,
"select A, min(B)
where A <> '" & C1 & "' and A <> ''
group by A
label min(B) ''
", 0);
C1:D1},
2, false)
因此查询选择与C1不同的名字,并选择最早的时间按名字分组。它不使用任何 header 标签,以避免它们与排序混在一起。使用数组符号 {row1; row2}
追加行 C1:D1,最后数组按第二列降序排列。
我需要以有点复杂的方式删除重复项。对于选定的行,我需要删除所有其他重复项,对于其他行,我需要保留最早的条目。
我在想什么(所选行:|史蒂夫|晚上10点|:
- 删除史蒂夫条目以外的重复条目(下午 4 点和下午 1 点)
- 按时间排序
- 获取唯一值
Table before:
| Steve | 10pm |
| Mike | 8pm |
| Steve | 4pm |
| Joe | 6pm |
| Mike | 3pm |
| Steve | 1pm |
Ex1:
Selected: | Steve | 4pm |
| Steve | 4pm |
| Joe | 6pm |
| Mike | 3pm |
Ex2
Selected: | Steve | 10pm |
| Steve | 10pm |
| Joe | 6pm |
| Mike | 3pm |
Ex3:
Selected: | Steve | 1pm |
| Joe | 6pm |
| Mike | 3pm |
| Steve | 1pm |
编辑:2016 年 12 月 19 日 12:02am
我找到了我的特定问题的解决方案。下面的答案对于删除重复项是正确的。我能够成功地找出一个位置。然而,我刚刚意识到,这不是解决我遇到的更大问题的正确方法...
=MATCH(B2,unique(INDEX(SORT(sort({query(B2:C, "select B, min(C) where B <> '" &B2 & "' and B <> '' group by B label min(C) ''", 0); B2:C2}, 2, false),2,1 ),0,1)),0)
比如说,您的数据在 A:B 列中,selected(不知何故?)行已被复制到 C1:D1。 (无论您的 selection 方法是什么,您都应该能够使 selected 行出现在某处)。那么一个可能的策略是:
- 使用
query
到select所有non-Steves,为每个选择最早的时间。 - 将 selected 行添加到结果中
- 根据需要对整个内容进行排序。
这是我的做法;查询范围从第二行开始以避免(可能)headers。
=sort({query(A2:B, "select A, min(B) where A <> '" & C1 & "' and A <> '' group by A label min(B) ''", 0); C1:D1}, 2, false)
与换行符相同:
=sort({
query(A2:B,
"select A, min(B)
where A <> '" & C1 & "' and A <> ''
group by A
label min(B) ''
", 0);
C1:D1},
2, false)
因此查询选择与C1不同的名字,并选择最早的时间按名字分组。它不使用任何 header 标签,以避免它们与排序混在一起。使用数组符号 {row1; row2}
追加行 C1:D1,最后数组按第二列降序排列。