我希望返回所有未完成包裹的列表。
对于每个唯一的包名称,我想返回包名称和代码下一个待完成(进行中或未开始)
例如,如果这是我的数据
包裹名字 | 包裹代码 | 地位 |
---|---|---|
名称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))