PQ中实现插入列:“拆分列”和“合并列”功能的组合
处理数据的时候我们经常会需要插入列,在excel中这个操作很简单,在需要插入列的单元格上点鼠标右键就可以了。
以下表为例,现在需要在“语文”前面插入“总分”列,求语文、数学、英语三门课成绩之和,在excel中,只需要在“语文”上点鼠标右键,在右键菜单中就有“插入”选项,插入列之后,在新列中输入公式,下拉就会得到三名学生的总分。
但是在PQ中,右键菜单中我们并没有找到“插入”操作:
在选项卡中,也没有插入列的功能:
那么,在PQ中应当怎样做呢?
首先,我们需要用“添加自定义列”的功能,添加总分列,同时计算出总分。
但是在PQ中新添加的表只能在原表的后面,列位置不对,需要重排序列,下面提供几种解决办法。
方法1:直接重排序
最简单直接的办法就是重排序列,这可以通过拖动鼠标完成:
但是看一下操作之后生成的代码可以看出,需要把插入位置之后的列名“语文”、“数学”、“英语”全部写出来,很是繁琐,而且更关键的是科目一旦有所变化,代码就需要重写,即使是通过鼠标操作完成的也需要重做一遍,无法实现程序的自动化,这和PBI的初衷不符。
那么这一步是否有其他办法呢?我这里提供两种替代性的方法,可以避免写出全部列名的的麻烦。
方法2:插入空白列后调整列顺序
我们可以利用Table.SplitColumn在“姓名”列后插入一列空白列,得到正确的列位置,然后交换调整空白列和“总分”列的位置就可以了。
首先在正确位置插入空白列:
所用的方法是Table.SplitColumn,这里可以看出拆分列的用法是很多的,不止是拆分文本列这么简单,它可以根据不同规则生成新列,而新列的位置就在原列的右侧,我们就利用这一点在正确的位置插入了一列空白列,方便起见就命名为“总分1”了。
然后只需要交换“总分1”和“总分”列的位置就可以了,这就避免了把“语文”、“数学”、“英语”全写出来的必要性。
然后删除不需要的“总分1”列就可以了。
方法3:“插入列”、“合并列”功能组合实现“插入列”
更方便的方法是用合并列,可以把最右侧的总分列直接调整到正确的位置,同时删除辅助列,一次性完成。
首先和方法2一样需要用拆分列在正确位置插入空白列,之后不用调整两列顺序,而是用合并列把“总分”列合并到“总分1”的位置。
从这里可以看出,合并列的用处也不止是把文本列合并这么简单,通过函数的使用可以实现两列数据的各类运算,包括替换、文本运算、数学运算等等,还可以进行Table、List、Record等对象间的各类运算。
实例下载:
链接:https://pan.baidu.com/s/1_hs-mjuzxOdEWL58jtRNpA
提取码:e1l6