Excel条件Lookup需求:提取含Wash/Soapy Wash且非倒数第二工序的零件
Excel提取符合条件零件列表的解决方案
方法一:动态数组公式(适用于Excel 365/2021及以上版本)
直接在空白单元格输入以下公式,自动返回去重后的合格零件列表:
=UNIQUE(FILTER(A:A,((B:B="Wash")+(B:B="Soapy Wash"))*(C:C<>MAXIFS(C:C,A:A,A:A)-1),""))
公式逻辑拆解:
(B:B="Wash")+(B:B="Soapy Wash"):判断当前行工序是否为Wash或Soapy Wash,满足则返回1,否则0MAXIFS(C:C,A:A,A:A):提取当前零件对应的最大工序编号(即总工序步数)C:C<>MAXIFS(C:C,A:A,A:A)-1:判断当前工序不是该零件的倒数第二步- 两个条件相乘,只有同时满足时结果为1,
FILTER据此筛选出对应零件,UNIQUE去除重复项
方法二:传统辅助列+筛选(兼容所有Excel版本)
- 新增辅助列D,输入公式并下拉:
该列用于获取每个零件的总工序数=MAXIFS($C:$C,$A:$A,$A2) - 新增辅助列E,输入公式并下拉:
符合条件的行会返回=AND(OR($B2="Wash",$B2="Soapy Wash"),$C2<>$D2-1)TRUE - 筛选E列为
TRUE的行,复制A列零件数据,使用「数据」选项卡中的「删除重复值」功能得到最终列表
方法三:Power Query批量处理
- 选中数据区域,点击「数据」选项卡 →「从表格/区域」(勾选「我的表格有标题」)进入Power Query编辑器
- 点击「转换」选项卡 →「分组依据」:
- 分组列选择
Part - 新增列名设为「总工序数」,操作选「最大值」,列选择
Operation no
- 分组列选择
- 点击「主页」选项卡 →「合并查询」→「合并查询作为新查询」,将原表与分组后的表按
Part列匹配 - 添加自定义列,输入公式:
=OR([Operation]="Wash",[Operation]="Soapy Wash") and [Operation no] <> [总工序数]-1 - 筛选自定义列为
TRUE的行,仅保留Part列,点击「主页」→「删除重复项」 - 点击「关闭并上载」,将结果导入Excel
内容的提问来源于stack exchange,提问作者HAZ
相关产品推荐
相关产品推荐

