本节所用知识点:Power Query - 表头和首行互转的妙用。

    实用案例:公司员工工资条的批量制作。

    原始数据如下图所示:

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图1

    然而我们人事部打印的要求需要一行标题,一行明细,一行空格,以此类推,如下图所示:

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图2

    其实用 Excel 的普通功能也可以实现,但今天我们就用一个新方法来实现,具体思路:

    比如某公司有 1000 个员工,那我们需要准备 1000 个表头,1000 条明细记录已经存在,1000 个空行,最后追加到一起,进行排序。

    下面直奔主题,选中数据源,“Power Query”——“从表”,进入到 PQ 界面。

    改名为 “工资条”,复制一份出来做 “标题”。

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图3

    下面我们首先处理 “标题” 部分。比如我们的示例数据有 10 条记录,那我们必须创建 10 个标题行。

    难点在于如何将数据源内容全部转换为标题行。

    首先我们需要把它里头的内容都清空,这里用到的功能是 “转换”——“提取”——“范围”(必须全选)。

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图4

    这里的关键在于范围的起始索引,我们设置为 199 的目的是什么?

    目的是从每一单元格的 199 位开始提取,因为每一单元格都不满 199 个,所以无论提取多少个字符都是为空,这样一来,空行就得到了。

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图5

    接下来一步则是查找替换值,查找空值,替换成为真空,即 null,“转换”——“替换值”(必须全选)。

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图6

    效果如下:

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图7

    接下来我们就可以把上面的表头复制到下面的内容中来,“转换”——“将第一行用作标题”——“使用表头作为首行”。

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图8

    效果如下:

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图9

    这样一来第一行已经有内容了,下面的怎么办呢?使用 “转换”——“填充”——“向下”(必须全选)。

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图10

    效果如下:

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图11

    可以发现,已经全部填充为标题行了,但是我们发现多了一行表头,这个时候我们可以用到反转的功能,将第一行内容变回为表头行。

    “转换”——“将第一行用作标题”——“使第一行用作标题”,这样一来的好处是,之后可以和明细行对的上。

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图12

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图13

    下面要做 10 个空行,这个相当简单了,直接复制 “标题” 即可。

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图14

    然后右边 “应用的步骤” 删除到空行就可以了。

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图15

    好了,基础数据已经准备完毕,这个时候还有一个问题需要考虑,即排序!

    我们先给 “标题” 表添加索引列,“添加列”——“添加索引列”——“自定义”。

    由工资表的布局,我们可以确定它的其实索引是 1,增量是 3,即第二个员工是从第四行开始打印。

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图16

    效果如下:

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图17

    然后给 “工资条” 也添加索引列,起始索引为 2,增量同样是 3。

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图18

    同样的给空行设置索引列。

    最后万事俱备,追加三个表。“开始”——“追加查询”——“三个或更多表”,把三个表添加进去。

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图19

    效果如下:

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图20

    下面对索引列进行排序就可以了,“开始”——“升序”。

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图21

    效果如下:

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图22

    这个时候发现第一行数据和表头的一样一样的,同样用上面的方法一步操作,“将第一行用作标题”。

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图23

    删除索引列,关闭并上载出来。

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图24

    最后我们用老方法美化一下它,好给员工打印。

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图25

    在 “视图” 里面将它的网格线也去掉。

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图26

    然后选中这么几列,“开始”——“条件格式”——“新建规则”。

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图27

    即有内容的时候,我们给它设置边框,条件 = A1<>””。

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图28

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图29

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图30

    有没有发现很销魂,最后我们在数据源里随意添加记录。

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图31

    刷新,动态更新记录。

    (2条消息) 16、Power Query-批量生成工资条的妙用_少年休闲海-CSDN博客 - 图32

    同样,删除也是动态的,一劳永逸!
    https://saper.blog.csdn.net/article/details/54098615