根据条件返回所有唯一值的列表

根据条件返回所有唯一值的列表

我希望返回所有未完成包裹的列表。

对于每个唯一的包名称,我想返回包名称和代码下一个待完成(进行中或未开始)

例如,如果这是我的数据

包裹名字 包裹代码 地位
名称1 100-01 完全的
名称1 100-02 没有开始
名称1 100-03 没有开始
名称2 200-01 完全的
名称2 200-02 完全的
名称2 200-03 进行中

然后我希望输出是:

包裹名字 包裹代码
名称1 100-02
名称2 200-03

任何帮助都将不胜感激,谢谢

答案1

您需要一个名为“下一步”的辅助列。在D2

=IF(AND(C1="Complete", A1=A2), "Next", "")

现在使用列表上的自动过滤器并过滤“下一个”。

如果您想要重复/单独的表格,您可以在 Excel 365 中使用 FILTER 函数

=FILTER(A2:B10, D2:D10="Next", "")

在旧版本中,您可以使用复杂的 VLOOKUP* 或数组公式,或者只需创建一个克隆表并在克隆上使用自动过滤。

*对于 VLOOKUP,插入新的 A 列并计算“下一个”出现次数,例如=IF(E2="Next", A1+1, A1)。然后使用 VLOOKUP 查找 A 列中每个数字的第一次出现次数并返回列 {2, 3}。

答案2

如果您拥有 Office 365:

  • 我创建了一个表并命名为数据表Packages

    F2: =UNIQUE(Packages[Package Name])
    G2: =INDEX(FILTER(Packages,(Packages[Package Name]=F2)*((Packages[Status]="In Progress")+(Packages[Status]="Not Started"))),1,2)
    

F2 将向下展开结果
选择 G2 并根据需要向下填充

在此处输入图片描述

如果你有早期版本的 Excel

  • 创建一个包含不同包名称列表的列

    • 这可以通过多种方式实现
      • 使用辅助列
      • 使用高级编辑器删除重复项
  • 然后在 G2 中使用此公式并向下填充:

=INDEX(Packages[Package Code],
    AGGREGATE(15,6,1/((Packages[Package Name]=F2)*((Packages[Status]="Not Started")
    +(Packages[Status]="In Progress")))*ROW(Packages)-ROW(Packages[#Headers]),1))

相关内容