删除间隔….Alternate…(Power Query 之 M 语言)

时间:2024-03-03 21:06:57

数据源:

       “姓名”“基数”“个人比例”“个人缴纳”“公司比例”“公司缴纳”“总计”,共7列7行数据

目标:

       留下第1、2、5三行数据

操作过程:

       【主页】》【删除行】》【删除间隔行】》输入删除的起始行》输入待删除的行数》输入删除行后面要保留的行数》【确定】

  

M公式:

       = Table.AlternateRows( 表, 起始行, 间隔删除的行数, 间隔保留的行数)

说明:

       删除的起始行在公式中由0开始计数,如上图三个数字分别是3、2、1,在公式中则是2、2、1。

  

  当实际行数大于余下保留的行时,这样的删除循环,如= Table.AlternateRows(步骤名,0,1,2),是从第1行起,删除1后,保留两行。如原数据在4行以内则保留2、3两行;7行以内则保留2、3、5、6四行;10行以内则保留2、3、5、6、8、9……以此类推。好吧,这样写有点支持头晕模式了,换个说法,就是从“第一参数”里,从“第二参数”开始,间隔着删除“第三参数”,保留“第四参数”,如此循环,直到最后一行。

  

  

最终效果:

       数据只剩下1、2、5三行数据 

扩展:

  列表删除间隔项:=List.Alternate( 列表, 间隔删除的项数, 间隔保留的项数, 起始保留的项数) 

    =List.Alternate( 列表, 第二参数),相当于=List.Skip( 列表, 删除的项数)

      =List.Alternate({1..10}, 5),结果为6、7、8、9、10

    =List.Alternate( 列表, 第二参数, 第三参数),第二参数除是表示间隔删除的项数以外,还相当于起始项。

      =List.Alternate({1..10}, 2, 3),结果为3、4、5、8、9、10

    所有参数完整时,结果是第四参数指定行数全部显示,并且后面的结果在原公式没有第四参数的基础上向下偏移第四参数。

      =List.Alternate({1..10}, 2, 3, 1},结果为1、4、5、6、9、10

  列表删除中间指定项:=List.RemoveRange( 列表, 删除起始项, 删除的项数)

    =List.RemoveRange({1..9},2)

      结果1、2、4、5、6、7、8、9

    =List.RemoveRange({1..9},2,5)

      结果1、2、8、9