Excel两列零件编号匹配问题:提取唯一值及关联匹配项
解决两列零件编号的唯一值匹配问题
核心需求拆解
- 从两列零件编号中提取所有唯一值(已实现)
- 为每个唯一值关联所有匹配项(含传递匹配:若A=B、B=C,则A、B、C互为匹配项)
实现全部匹配项的公式方案
假设零件编号在A列和B列,唯一值在D列(从D2开始),可在E2单元格输入以下公式,下拉+右拉填充即可:
=TEXTJOIN(", ", TRUE, UNIQUE(FILTER(TOCOL(A:B, TRUE), XMATCH(TOCOL(A:B, TRUE), FILTER(TOCOL(A:B, TRUE), TOCOL(A:B, TRUE)=D2))<>0)))
公式说明
TOCOL(A:B, TRUE):将A、B两列合并为一列,自动忽略空单元格FILTER(TOCOL(A:B, TRUE), TOCOL(A:B, TRUE)=D2):筛选出与当前唯一值直接匹配的项XMATCH(...)<>0:利用匹配关系的传递性,筛选出所有同组关联项UNIQUE():去除重复的匹配项TEXTJOIN():将所有匹配项用逗号分隔,整理为易读格式
若你的Excel版本支持LET()函数,可使用更简洁的版本提升可读性:
=LET( allParts, TOCOL(A:B, TRUE), directMatches, FILTER(allParts, allParts=D2), allMatches, UNIQUE(FILTER(allParts, XMATCH(allParts, directMatches)<>0)), TEXTJOIN(", ", TRUE, allMatches) )
注意事项
- 若零件编号存在多余空格,会导致匹配失败,可先添加
TRIM()处理:TOCOL(TRIM(A:B), TRUE) - 若匹配项数量较多,可将
TEXTJOIN的分隔符换为换行符CHAR(10),记得开启单元格自动换行
内容的提问来源于stack exchange,提问作者Chetan Chimate
相关产品推荐
相关产品推荐

