Excel之PowerQuery Table.InsertRows函数在指定多个下标位置同时插入数据
网友提问:

网友的意思是我在课上讲了Table.InsertRows可以在指定下标插入一行数据,也可以按一定规律循环插入数据。但是我没讲,如何在指定位置插入多行数据。 没讲如果在无规则的下标中插入指定数据,例如在下标 1、3、6 同时插入数据。
回答网友问题:
我说我讲了,您信不信?只是您没有学会应用。
就好比,大家都背原理,背概念,奇数不能被2整除,偶数能被2整除
概念和应用是有区别的。例如,我回家打开灯,又对着灯按了187次,那现在灯是开着的还是关着的(忽略我把灯按坏了,忽略这个过程中停电了)。
已知我回家打开灯,灯是亮的,再按第1次是关(奇数),再按第2次是开(偶数)
187是奇数(尾数1、3、5、7、9),所以灯是关着的。 这件事背原理没用吧?
好比,包拯破案,如果他破不了,难到他说,因没有人来开封府自首,因为没有人承认这事是他做的。显然他不是,否则再正派,也无法流芳千古。
回答网友第一个问题:
我们表示一行数据时用的方法 { [记录1] },那多行呢?用 { [记录1] , [记录2] }

哪里讲的?M函数第一节课就讲了

如果只是这个问题,我就私信回答该网友了,但是第2个问题,我觉得还是不错的,至少不会像第一个问题这么简单。
每次写文章或录视频回答问题,我都会在自己认为有至少30%人不会的情况下才会做的。
回答网友第二个问题:
以下表为例,网友想在 下标:1、3、6 同时插入一个空行

我们在M函数第2季第1节课讲过

那我们可不可以这样想
= List.Accumulate({1,3,6}, 更改的类型, (当前表, 插入的下标) => Table.InsertRows(当前表,插入的下标, {[姓名=null,分数=null]})
当前表,第一次是更改类型那张表,当我们在下标1插入数据后,当前表变成第1次插入数据的那张表,再插入第2次,再插入第3次。。。
如果你真这么写,答案就是错的
因为,第1次在下标1插入后,下标3就变成了下标4。。。。,类似我们在ExcelVBA中讲删除行,如果我们倒着来,就可以避免错误

于是我们可以把{1,3,6} 降序,代码修改成 List.Sort({1,3,6},Order.Descending)
就是把{1,3,6} 变成{6,3,1}
这就是我们想到的了


PowerQuery教程:https://www.bilibili.com/video/BV1oa4y1j75e