如何从Excel工作表1提取父级Sales Order对应子项整行到工作表2?
Excel提取父项对应子项整行数据解决方案
方法一:使用FILTER函数(适用于Excel 365/2021及以上版本)
- 假设工作表1为
Sheet1,工作表2为Sheet2,Concatenation列在两表中均为C列 - 在Sheet2现有数据下方的空白行(比如A3单元格,假设现有数据到A2)输入公式:
=FILTER(Sheet1!A:Z, LEFT(Sheet1!C:C, LEN(Sheet2!C2))=Sheet2!C2)- 逻辑:通过
LEFT函数截取Sheet1中Concatenation值的前N位(N为Sheet2父项的长度),与父项匹配后,筛选出所有对应子项的整行数据 - 优化:如果父项长度固定(比如示例中为12位),可直接将
LEN(Sheet2!C2)替换为固定数字,提升公式效率 - 特性:公式会自动溢出显示所有匹配行,无需手动下拉填充
- 逻辑:通过
方法二:使用Power Query批量处理(兼容全版本Excel)
- 导入数据:点击「数据」选项卡,分别将Sheet1和Sheet2的数据导入Power Query编辑器
- 添加筛选逻辑:在Sheet2的查询中新增自定义列,输入以下M语言公式:
Table.SelectRows(Sheet1, each Text.Start([Concatenation], Text.Length([Concatenation])) = [Concatenation]) - 展开数据:点击自定义列右侧的展开按钮,选择需要保留的所有字段
- 导出结果:关闭并上载数据至Sheet2的空白区域,后续数据更新可直接刷新查询
注意事项
- 确保两表
Concatenation列的格式一致(均为文本或数值),避免格式不匹配导致筛选失败 - 若父项与子项的命名规则为「父项+序号」(如父项
2503319449100,子项2503319449101),也可使用TEXTBEFORE函数简化匹配逻辑:=FILTER(Sheet1!A:Z, TEXTBEFORE(Sheet1!C:C, RIGHT(Sheet1!C:C,1))=Sheet2!C2)
内容的提问来源于stack exchange,提问作者Alfred Bach
相关产品推荐
相关产品推荐

