You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Excel/Power Query中提取各零件最低装配层级数据?

在Power Query中保留零件最低装配层级行的解决方案

针对你的需求——每个零件仅保留其对应最低装配层级的行,以下是Power Query的具体实现步骤,同时也提供Excel公式辅助思路:

Power Query 操作步骤

1. 导入数据到Power Query

选中你的装配结构数据区域,点击Excel「数据」选项卡 → 「从表格/区域」,将数据导入Power Query编辑器(确保数据首行是列标题,比如Level1到Level6)。

2. 添加自定义列标记最低层级行

我们需要识别出每行中零件编码所在列是该行最右侧非空列的行(这一行就是该零件的最低层级行)。
点击「添加列」→「自定义列」,输入以下M语言公式:

= let
    // 定义你的层级列名,根据实际情况调整
    LevelColumns = {"Level1", "Level2", "Level3", "Level4", "Level5", "Level6"},
    // 获取当前行各层级列的非空值列表
    NonEmptyValues = List.RemoveNulls(List.Transform(LevelColumns, each Record.Field(_, _))),
    // 取该行最后一个非空的零件编码
    LastPart = List.Last(NonEmptyValues),
    // 找到该零件在层级列中的位置,判断是否是最后一个非空列的位置
    PartColumnPosition = List.PositionOf(LevelColumns, Text.From(LastPart)),
    IsLowestLevel = PartColumnPosition = List.Count(NonEmptyValues) - 1
in
    IsLowestLevel

如果你的层级列名不同,直接修改LevelColumns里的内容即可;如果数据没有空值问题,可简化公式。

3. 筛选并整理数据

  • 在新生成的自定义列中,筛选值为true的行;
  • 删除这个自定义列,剩下的就是每个零件最低层级的行。

简化方案(针对固定层级结构)

如果你的层级列固定是Level1到Level6,也可以用更直接的方式:

  1. 添加自定义列,提取每行最后一个非空的零件编码:
= List.Last(List.RemoveNulls({[Level1],[Level2],[Level3],[Level4],[Level5],[Level6]}))
  1. 对这个自定义列执行「删除重复项」操作——因为每个零件的最低层级行只会出现一次,重复项都是该零件作为上层子件的行,删除后即可得到目标结果。

Excel 公式辅助思路(适合小数据集)

如果数据量不大,也可以用Excel公式标记最低层级行:
假设层级列是A到F(对应Level1到Level6),在G2单元格输入:

=IF(COUNTA(A2:F2)=MATCH(TRUE,INDEX(A2:F2<>"",0),0),"最低层级","")

下拉填充后,筛选G列为「最低层级」的行即可。

内容的提问来源于stack exchange,提问作者Tim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 22:58:38