如何删除Google Spreadsheets范围内的所有其他重复项

时间:2016-12-19 03:20:33

标签: google-sheets spreadsheet google-docs

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

我在想什么(选定行:| Steve | 10pm |:

  1. 删除除此之外的重复Steve条目(下午4点和下午1点)
  2. 按时间排序
  3. 获取独特的价值
  4. 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:02

    我找到了解决我特定问题的方法。以下答案证明删除重复项是正确的。我能够成功找到一个位置。不过,我刚才意识到,这不是解决我遇到的更大问题的正确方法......

    =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)
    

1 个答案:

答案 0 :(得分:2)

比如说,您的数据位于A:B列中,所选的(某种方式?)行已复制到C1:D1。 (无论您的选择方法是什么,您都应该能够将所选行显示在某处)。然后可能的策略是:

  1. 使用query选择所有非Steves,为每个人选择最早的时间。
  2. 将选定的行添加到结果
  3. 根据需要对整个事物进行排序。
  4. 我是这样做的;查询范围从第2行开始,以避免(可能)标题。

    =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不同的名称,并按名称选择最早的时间。它不使用任何标题标签,以避免它们与排序混合。行C1:D1使用数组表示法{row1; row2}附加,最后数组按降序排列第二列。