如何删除范围 Google 电子表格中的所有其他重复项

How to remove all other duplicates in range Google Spreadsheets

我需要以有点复杂的方式删除重复项。对于选定的行,我需要删除所有其他重复项,对于其他行,我需要保留最早的条目。

我在想什么(所选行:|史蒂夫|晚上10点|:

  1. 删除史蒂夫条目以外的重复条目(下午 4 点和下午 1 点)
  2. 按时间排序
  3. 获取唯一值

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 行出现在某处)。那么一个可能的策略是:

  1. 使用query到select所有non-Steves,为每个选择最早的时间。
  2. 将 selected 行添加到结果中
  3. 根据需要对整个内容进行排序。

这是我的做法;查询范围从第二行开始以避免(可能)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,最后数组按第二列降序排列。