【问题标题】:How to remove all other duplicates in range Google Spreadsheets如何删除范围 Google 电子表格中的所有其他重复项
【发布时间】:2016-12-19 03:20:32
【问题描述】:

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

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

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

【问题讨论】:

    标签: google-sheets spreadsheet google-docs


    【解决方案1】:

    假设您的数据在 A:B 列中,并且选定的(不知何故?)行已复制到 C1:D1。 (无论您的选择方法是什么,您都应该能够使选定的行出现在某处)。那么一个可能的策略是:

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

    这就是我的做法;查询范围从第二行开始以避免(可能)标题。

    =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} 追加,最后将数组按第二列降序排序。

    【讨论】:

    • 这真的很接近。问题是;我需要对每一行应用这个公式......理想情况下,最终结果将是一个数字。
    • 我现在意识到,也许问一般性问题会更好 X_x
    • 刚刚意识到如何让它发挥作用。稍后会回复您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多