Power Query是什么?
Power Query 功能复杂、用途多样,但常用的来说,就是 Excel 里一个用来整理和处理表格数据的工具,让数据分析更方便。
✅ 适合:重复性数据清洗和转换,比如对同样格式的数据嫉妒性的报表,比如日报周报等
❌ 不适合:一次性临时分析(直接手工更快)
❌ 不适合:需要人工判断的数据(如主观分类)
❌ 不适合:频繁变化的清洗规则
PQ常用功能
在我的理解里,它就是集成了一些常用功能,常用功能包括:
| 功能 | 作用说明 | 示例 |
|---|---|---|
| 填充空白单元格 | 将空值用上方或下方的非空值填充(常用于合并拆分后留下的空格) | 上下合并后出现空行 → 自动向下填充 |
| 转置(行列转换) | 将行变列,列变行(适用于宽表变长表) | 把"一月、二月、三月"变成三列,每列一个月份的数据 |
| 删除空行或空列 | 清理无意义的空白行/列,使数据更整洁 | 删除全为空的行,或仅含空值的列 |
| 去除首尾空格 | 清理文本前后多余的空格 | " 张三 " → "张三" |
| 批量替换/修改数据 | 对多个单元格进行统一更改 | 将"男"改为"男性","女"改为"女性" |
| 合并列或拆分列 | 合并多个列内容,或将一列按分隔符拆分成多列 | 姓名 + 部门 → 姓名_部门;张三,李四 → 两列 |
| 筛选与排序 | 快速定位目标数据,按条件排序 | 筛选销售额 > 100,按日期降序排列 |
| 计算与添加列 | 根据已有字段生成新列 | 新增"总价"列 = 单价 × 数量 |
| 透视与反透视 | 改变数据布局,便于分析 | • 透视(Pivot):将"月份"列变为多列(如"一月"、"二月") • 反透视(Unpivot):将多列数据还原为单列格式 |
| 添加索引列 | 为每一行添加唯一编号,方便后续处理 | 添加"序号"列,从 1 开始递增 |
| 提取文本/日期 | 从文本中提取特定部分(如日期、数字) | 从"订单20240101"中提取"2024-01-01" |
| 条件列 | 根据条件创建新的分类或标记 | 若"金额">500,则标记为"大额" |
| 可重复操作(刷新机制) | 所有步骤记录在查询中,下次数据更新只需点击"刷新" | 数据换月后,直接刷新即可自动应用所有规则 |
数据源
打开数据源
在Excel顶部工具栏,按照自己的数据来源来选择就行了。
PS:建议操作PQ前,对数据源进行拷贝 ,用拷贝后的副本进行PQ数据分析。因为PQ的特性,会自动的把数据源变成表格,好处是更改数据源的内容,会自动同步到PQ,但是表格会更改数据源的样式,我不喜欢这个特性,因为数据源就是给人看的,会有很多颜色标注,建议还是拷贝数据源再操作,如果数据源不在意样式,可以随便的话就没事,避免数据源是样式很重要,PQ操作一下样式全没了。


-
打开数据源后,如果是导入文件,选择需要操作的 sheet,点击 "转换数据"。我一般是打开excel,在对应sheet里选择"来自表格/区域"来导入PQ
-
这时,Power Query 会在内存里生成这个表格的一个 副本 来进行操作,在编辑器里做的任何修改都 不会影响原表(不影响数据,但是会自动把数据源变成表格)。
-
调整好数据、整理完毕后,点击 "加载" ,或者"关闭后上载" ,Power Query 会把处理后的数据 生成一个新的表格(通常在新的工作表里中),原表格的内容保持不变。
-
生成的这个新表格就是我们要用来做数据分析的表(可以左侧"查询"改名后再上载)。

关闭后再次打开PQ
编辑到一半退出后想继续编辑,如何打开对应的编辑呢
引用数据源报错-提示"表不能相互重叠"
比如我有以下sheet

我分别对ABC三列导入了PQ进行分析

我又想对整个数据区域进行分析,但我引用时却报错"表不能相互重叠",简单来说:当你试图在Excel中创建多个来自相同区域的数据查询时,如果这些查询指向的源数据范围有交叉或重复,Excel就会提示这个错误。
这是Excel的保护机制,主要为了避免:
-
数据不一致风险:同一份数据被多个查询修改
-
刷新冲突:多个查询同时更新同一区域

引用数据源报错-引用整个区域但只显示一部分
但我又想对整个sheet得ABC三列进行分析,于是我引用整个区域,但是很诡异的是,导入PQ后生成的查询只显示第一列的数据。
这是因为Power Query有"记忆"功能! 当重复引用相同或重叠的区域时,它不会创建新查询,而是直接复用已有的查询结果。
因为我对A列有过一个查询了,我引用整个区域,这个引用和前面ABC三列的查询是重合的,所以PQ直接复用已有的查询。

引用数据源规范-避免报错
如果报错了就重新删了重来吧,如何避免报错,也是一种对引用数据源的规范,有以下方案;
方案一:整体引用后拆分(仅操作PQ,不操作excel),
引用法步骤(推荐):
-
创建"主查询":引用完整A:D区域
-
右键"主查询" → 【引用】3次
→ 生成:主查询、主查询1、主查询2、主查询3
- 分别重命名和修改:
-
主查询1 → 重命名为"引用_分析_A" → 删除B、C、D列
-
主查询2 → 重命名为"引用_分析_B" → 删除A、C、D列
-
主查询3 → 重命名为"引用_分析_C" → 删除A、B、D列
复制法步骤:
-
创建"主查询":引用完整A:D区域
-
右键"主查询" → 【复制】3次
→ 生成:主查询 (2)、主查询 (3)、主查询 (4)
- 分别重命名和修改:
-
主查询 (2) → 重命名为"分析_A" → 删除B、C、D列
-
主查询 (3) → 重命名为"分析_B" → 删除A、C、D列
-
主查询 (4) → 重命名为"分析_C" → 删除A、B、D列
方案二:数据源分离法(操作excel)
步骤:
- 创建4个Sheet:
Sheet1_原始:存放完整原始数据
Sheet2_A列:只复制A列数据
Sheet3_B列:只复制B列数据
Sheet4_C列:只复制C列数据
-
分别基于不同Sheet创建查询
-
完整分析仍在Sheet1_原始进行
如何判断当前是什么方法?
判断方法:
- 查看查询的"源"步骤:
-
如果源是其他查询名 → 引用法
-
如果源直接指向Excel表 → 复制法
- 查看查询依赖项:
- 视图 → 查询依赖项
认识PQ表结构
认识表格结构-Excel 导入 PQ 后显示差异
Excel是"电子纸张" ,可以自由排版、合并、加样式。
PQ是"数据库思维" ,要求数据是规范的二维表:第一行是列名,每列一种数据类型,没有合并单元格,没有空行/空列。
|---------------|--------------------------------------------|-----------------------------------------------------------|
| Excel 显示 | Power Query 显示 | 说明 |
| 合并单元格 | 只保留第一个单元格的值,其余单元格变成空白(PQ 内显示为 null) | PQ 不识别合并单元格本身,只处理单元格内容 |
| 空白单元格 | 显示为 null | PQ 用 null 来表示空单元格,和 Excel 空格不同 |
| 首行列标题 | 默认 PQ 会把第一行提升为列名(Promoted Headers) | 如果第一行是数据,PQ 会自动把它当作列名 |
| 数据类型 | 每列显示类型图标(ABC、123、日历等),自动生成"Changed Type"步骤 | Excel 不显示类型,所有内容默认是文本或数字;PQ 会严格区分文本、数字、日期等;excel日期本质就是数字。 |
| 公式 / 合并内容 | PQ 不会保留 Excel 内置公式,显示的是公式计算结果 | 例如 SUM、IF 等公式在 PQ 中不会保留,导入后只能看到计算结果 |
| 单元格格式 | PQ 不显示字体颜色、背景色、边框、格式设置 | PQ 专注于数据内容和结构,不处理视觉样式 |
| 行列结构 | PQ 的表格是严格的"数据表",每列必须有列名,每行必须对齐 | Excel 可以有空行、空列、自由排版,PQ 会自动规整 |
认识表结构-数据类型
PQ有自己的数据类型,该列的数据类型显示在列头,如图,点击这个地方可以更改该列的数据类型。

数据类型有几大类,文本、数字、逻辑值、日期。详细的可以点击图中的位置展开看看,会显示对应的图标的。

认识工作区
认识工作区-应用的步骤(历史记录)
右侧"应用的步骤:会记录操作的每一个步骤,前面几个都是系统自带的,第一步"源"可以看到是来自哪个文件,第二步"导航"可以看到来自哪个sheet,第三步"提升的标题是PQ自动将数据第一行当作列标题 的操作,第四步"更改的类型",这是PQ自动识别每列的数据类型并转换的操作,数据类型见前文。这四个步骤都是系统自动操作。
我们进行操作后右侧就会显示对应的操作步骤,点击对应步骤,会显示该步骤操作后的样子,每一步都可以单独删除,重命名,插入等。
比如我新增一列,并且把数据类型改为数字,就会在右侧显示以下步骤。
每个步骤都可以右键后重命名的,或者删除等等

右侧查询设置关闭后如何打开
工作栏-视图-最左侧"查询设置"
认识工作区-查询
左侧数据框会显示有"查询",查询就是Query的意思,一个查询就等于生成一个新的表格,比如你只有一个源数据表,但是你想对这里面的数据分开处理,生成几个表格来做数据分析,你就可以生成多个"查询"。
比如我有一个源数据表如下,我想对A、B、C三列分别做数据分析,所以分别选择ABC三列,就会生成三个"查询"

每个查询都有自己的操作步骤,"查询"上载会生产对应的sheet,右键查询更改名字。

操作步骤实例
PQ是对列/行操作,没有excel单个单元格的概念,不存在单独只改一个格子的操作。
填充-合并单元格的空白单元格
如图,选中指定列-工具栏-转换-填充-向下


替换-空白单元格
数据列有一些空白单元格null,为了保持数据的一致性,将指定列的null替换为"空"。
工具栏-转换-替换值-替换值-输入

删除列-不纳入分析的列
工具栏-删除列
添加列-计算数据
工作栏-添加列-自定义列

这一步我会使用到M函数,笔记放在这:
合并列-合并多列为一列(A1+分隔符+B1=C1)
工具栏-转换-合并列


透视和逆透视
| 操作 | 输入(源数据) | 输出(结果) | 目的 |
|---|---|---|---|
| 逆透视 | 宽表(交叉表) | 长表(数据表) | 数据清洗,为分析做准备 |
| 透视 | 长表(数据表) | 宽表(汇总表) | 数据展示,便于阅读 |
用人话来说:
PQ透视 ≈ Excel数据透视表的"透视"功能,都是把长数据变成宽汇总表。
PQ逆透视 = Excel数据透视表的"逆操作"!比如平时我们双击数据透视表,会弹出一个明细表一样。
具体亲自上手操作会更清晰。
摊平列-多列"摊平"成两列(逆透视)
工具栏-转换-逆透视列
比如我有这样一个表格的结构,不同项目的中奖和参与人数不一样,我现在想要所有项目所有参与人员的名单, 但是参与人员有4列n行。
这个时候可以对参与人员区域进行逆透视。
单独把这个区域做一个查询

选中这四列,选择"逆透视列"
结果如下,多列摊平成两列(逆透视)的意思就是,标题行单独一列(属性),其余的全部为一列(对应属性的值。

然后删除"属性"列,对人名一列进行去重,就得到所有项目所有参与人员的名单了。
