【问题标题】:Return rows where Column A is either unique or the last occurrence of duplicate values返回 A 列是唯一的或最后一次出现重复值的行
【发布时间】:2016-06-18 13:19:20
【问题描述】:

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

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

“数据”表有我的原始数据。

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

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

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

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

最终结果应类似于“结果”表。

【问题讨论】:

    标签: google-sheets


    【解决方案1】:

    我将解释分为两部分,为了简单描述所有数据都在一张表中的情况: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 列的每个条目进行查找,返回水果名称。

    【讨论】:

      【解决方案2】:

      除了汤的答案,假设你的数据在 A:B,看看这是否有效?

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-07
        相关资源
        最近更新 更多