返回列A唯一或最后一次出现重复值的行

时间:2016-06-18 13:19:21

标签: google-sheets

https://docs.google.com/spreadsheets/d/15xzwTJxxTuvWoMOgwGyMZk2BSknc9wD6iEUaZcOk03M/edit?usp=sharing

我在此表中输入了一些虚假数据,显示了我想要的结果。

'数据'表格包含原始数据。

“过滤器”表格包含我不想在结果中显示的值。

“结果”表显示了我正在寻找的结果。

我想使用查询公式过滤“数据”表格中的行,该查询公式仅返回列A唯一的行或列A是重复值的最后一次出现。

然后我想删除列A包含在'Filter!:A:A'列中找到的值的所有行。

最终结果应该与“结果”表相似。

2 个答案:

答案 0 :(得分:0)

我将解释分为两部分,为了简单描述所有数据在一张表中的情况:A:带有原始数据的B列,以及需要过滤掉的D列。在单元格F1中输入以下公式,它将创建一个不重复的ID列表,同时过滤掉D的内容:

=unique(filter(filter(A:A, len(A:A)), isna(match(filter(A:A, len(A:A)), filter(D:D, len(D:D)), 0))))

按长度排列的过滤器不包括空单元格。当在D列中找不到Id时,match返回N / A.只有这些由外部过滤器返回,条件为isna(match(...))。最后,unique消除了重复。

创建唯一ID列表后,是时候将数据放在旁边了。这在单元格G1中完成:

=arrayformula(vlookup(filter(F:F, len(F:F)), sort({A:B, row(A:A)}, 3, false), 2, false))

主要思想是使用vlookup从表A:B中的A列查找每个Id。它返回找到的最后一个条目。由于您希望找到最后一个条目,因此表A:B中的顺序通过按行数按递减顺序排序:sort({A:B, row(A:A)}, 3, false)来反转。然后arrayformula(vlookup(...))对F列的每个条目执行查找,返回水果名称。

答案 1 :(得分:0)

除了汤的回答,并假设您的数据在A:B中,看看是否有效?

=ArrayFormula(iferror(vlookup(unique(A:A), sort({A:B, row(A:A) }, 3, 0), {1,2}, 0)))