【问题标题】:remove duplicates based on one column and keep last entry根据一列删除重复项并保留最后一个条目
【发布时间】:2019-07-10 16:56:33
【问题描述】:

我正在尝试根据一列删除重复项并保留最后一个条目。现在我的公式保持第一个值。

我正在使用这篇文章中的公式: Selecting all rows with distinct column values - Google query language

【问题讨论】:

  • 您的数据是否按照您正在使用的答案进行排序?
  • 不,我的数据是从 A 列到 Y 列排序的,我要查找重复项的列是 N 列。我使用的公式是:=ArrayFormula(iferror(VLOOKUP(unique(Data !N:N),{Data!N:N,Data!A:Y}, {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 ,17,18,19,20,21,22,23,24,25,26,27,28}, 0 )))
  • 我认为它应该是可行的,但实际上可以用几行和几列模拟一些数据来测试可能的答案。
  • 在这里创建了一个测试电子表格:docs.google.com/spreadsheets/d/…

标签: google-sheets


【解决方案1】:

简短的回答就是将公式中的 0(或 false)更改为 1(或 true),以便 VLOOKUP 匹配每个唯一值的最后一个条目

=ArrayFormula(iferror(VLOOKUP(unique(Data!D:D),{Data!D:D,Data!A:D}, {2,3,4,5},1 ),""))

这似乎对您的测试数据有效

但这并不是故事的结局。

如果您将 VLOOKUP 与此公式一起使用,则数据必须在查找列 according to the documentation 上排序,但在上面的 cmets 中,您说您不能假设数据在查找列上排序。如果您在未排序的数据上尝试此操作,事情确实会出错。所以你必须像这样在查找列上对其进行排序

=ArrayFormula(iferror(VLOOKUP(sort(unique(Data1!D2:D),1,true),sort({Data1!D2:D,Data1!A2:D},1,true), {2,3,4,5},1 )))

唯一的小缺点是这不包括标题(因为它们会被排序到数据的末尾)。

这是相同的测试数据,按 ID 降序排列

这给出了正确的结果(但没有标题)

你可以通过放置来添加标题

=query(Data1!A:D,"select * limit 0")

高于数据。

【讨论】:

  • 非常感谢!非常有帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-14
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多