Excel函数需求:提取机器数量>1的产品对应机器数据
嘿,这个需求我之前帮朋友处理过,其实分两种情况来解决会更稳妥,毕竟不同Excel版本支持的函数不一样~先假设你的表格结构是A列存产品名(比如product5),B列存对应的机器编号(比如machine 1),如果结构不一样,你只要把公式里的列号对应调整就行哈。
方案一:适用于Excel 365/2021(支持动态数组函数)
这个版本的函数更简洁,能直接自动溢出所有符合条件的结果,不用手动下拉:
=LET( unique_products, UNIQUE(A:A), product_counts, COUNTIF(A:A, unique_products), filtered_products, FILTER(unique_products, product_counts>1), MAP(filtered_products, LAMBDA(p, TEXTJOIN(", ", TRUE, p&" "&FILTER(B:B, A:A=p)))) )
我给你拆解下逻辑:
UNIQUE(A:A):提取所有不重复的产品名COUNTIF(A:A, unique_products):统计每个产品对应的机器数量FILTER(unique_products, product_counts>1):筛选出机器计数>1的产品MAP(...):遍历每个符合条件的产品,用TEXTJOIN把对应的「产品+机器」条目用,拼接起来
方案二:适用于旧版Excel(无动态数组支持)
旧版得用辅助列配合数组公式来实现:
添加辅助列统计机器数量:在C2单元格输入公式,下拉填充到所有数据行
=COUNTIF($A$2:$A$100,A2)(把
$A$2:$A$100改成你实际的数据范围)生成拼接结果:在D2单元格输入以下数组公式,按
Ctrl+Shift+Enter结束输入,再下拉填充=IF(C2>1, TEXTJOIN(", ", TRUE, IF($A$2:$A$100=A2, $A$2:$A$100&" "&$B$2:$B$100, "")), "")逻辑是:先判断当前产品的机器计数是否>1,是的话就用
TEXTJOIN拼接所有同一产品的「产品+机器」条目,否则返回空值。
比如你提到的product5,如果A列出现2次、对应B列是machine 1和machine 4,两种方案都会返回你想要的格式:product5 machine 1, product5 machine 4
内容的提问来源于stack exchange,提问作者ants99
相关产品推荐
相关产品推荐

