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

Power Query遍历列提取交替位置下公差值生成新列

实现方案(Power Query M代码)

核心思路

  1. 标记列中的有效数据(非空、纯数字)
  2. 给有效数据按顺序分配连续序号,按「上公差(奇数序号)、下公差(偶数序号)」的规则识别目标值
  3. 提取偶数序号的有效数据到新列lower tol,其余行留空

完整M代码

假设你的数据列名为公差数据,导入的表名为Table1,代码如下:

let
    源 = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    // 添加行索引,用于后续定位
    添加行索引 = Table.AddIndexColumn(源, "行索引", 1, 1, Int64.Type),
    // 标记当前行是否为有效数据:非空且为纯数字
    标记有效数据 = Table.AddColumn(添加行索引, "是否有效", each not IsNull([公差数据]) and Value.Is([公差数据], type number)),
    // 给有效数据分配连续序号,无效数据留空
    生成有效序号 = Table.AddColumn(标记有效数据, "有效序号", each 
        if [是否有效] then 
            List.PositionOf(Table.SelectRows(标记有效数据, each [是否有效])[行索引], [行索引]) + 1 
        else 
            null
    ),
    // 提取偶数序号的有效数据作为下公差,其余行留空
    生成lower_tol列 = Table.AddColumn(生成有效序号, "lower tol", each 
        if [是否有效] and Number.Mod([有效序号], 2) = 0 then 
            [公差数据] 
        else 
            null
    ),
    // 移除辅助列,保留原数据列和新生成的lower tol列
    移除辅助列 = Table.RemoveColumns(生成lower_tol列, {"行索引", "是否有效", "有效序号"})
in
    移除辅助列

代码说明

  • 标记有效数据:用IsNull判断空值,Value.Is判断是否为纯数字,确保只处理符合要求的数据
  • 生成有效序号:筛选出所有有效行的索引列表,用List.PositionOf找到当前行在有效列表中的位置,再加1得到从1开始的连续序号
  • 生成lower tol列:用Number.Mod判断有效序号是否为偶数,是则提取原数据值,否则留空

内容的提问来源于stack exchange,提问作者what's_in_a_name

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 10:55:30