Power Query:If 语句 —— 嵌套 if 与多条件
在 Excel Power Query 中,IF 语句是最常用的功能之一,用于判断条件,并根据结果为 TRUE 或 FALSE 返回相应的值。该 IF 语句与 Excel 中的 IF 函数存在一些差异。本教程将为您介绍其语法,并提供若干简单和复杂的示例。
通过编写 M 代码在 Power Query 中实现 if 语句
Power Query 中基本 if 语句的语法
在 Power Query 中,语法如下:
- logical_test:您要测试的条件。
- value_if_true:当条件为 TRUE 时返回的值。
- value_if_false:当结果为 FALSE 时返回的值。
在 Excel Power Query 中,有两种方式创建此类条件逻辑:
- 使用“条件列”功能处理一些基本场景;
- 编写 M 代码,轻松应对更高级的场景。
接下来,我将为您展示一些使用该 if 语句的实用示例。
在 Power Query 中使用条件列实现 if 语句
示例 1:基本 if 语句
在这里,我将为您介绍如何在 Power Query 中使用 if 语句。例如,我有一份如下所示的产品报告:当产品状态为“旧”时,显示 50% 折扣;当产品状态为“新”时,显示 20% 折扣(如下图所示)。

1. 从工作表中选择数据表,然后在 Excel 2019 和 Excel 365 中,单击数据> 来自表格/区域,参见截图:

注意:在 Excel 2016 和 Excel 2021 中,单击数据> 来自表格,参见截图:

2. 然后,在打开的 Power Query 编辑器窗口中,单击添加列 > 条件列,参见截图:

3. 在弹出的添加条件列对话框中,请执行以下操作:
- 新列名称:为新列输入一个名称;
- 然后,指定所需的条件。例如,我将指定:如果“状态”等于“旧”,则返回 50%;否则返回 20%。
- 列名称:用于评估 if 条件的列。此处我选择“状态”。
- 运算符:用于设定条件逻辑。选项将根据所选“列名称”的数据类型动态变化。
- 文本:支持“以……开头”、“不以……开头”、“等于”、“包含”等多种条件。
- 数字:支持等于、不等于、大于或等于等条件。
- 日期:早于、晚于、等于、不等于等条件。
- 值:用于比较评估结果的具体数值,与“列名称”和“运算符”共同构成一个条件。
- 输出:条件满足时返回的值。
- 否则:当条件不成立时返回的另一值。

4. 然后,单击确定按钮,返回到 Power Query 编辑器窗口。此时,一个名为折扣的新列已成功添加,参见截图:

5. 如果要将数字格式化为百分比,只需单击折扣列标题处的 ABC 123 图标(),然后根据需要选择百分比,参见截图:

6. 最后,请单击主页 > 关闭并加载 > 关闭并加载,将此数据加载到新工作表中。

示例 2:复杂 if 语句
使用“条件列”选项,您还可以在添加条件列对话框中插入两个或更多条件。操作步骤如下:
1. 选择数据表,单击数据> 来自表格/区域,进入 Power Query 编辑器窗口;在新窗口中,单击添加列> 条件列。
2. 在弹出的添加条件列对话框中,请执行以下操作:
- 在新列名称文本框中输入新列的名称;
- 在第一个条件字段中指定首个条件,然后点击添加子句按钮,即可按需添加更多条件字段。

3. 完成条件设置后,单击确定按钮,即可返回 Power Query 编辑器窗口,并立即获得一个包含所需结果的新列。参见截图:

4. 最后,请单击开始 > 关闭并加载 > 关闭并加载,将此数据加载到新工作表中。
通过编写 M 代码在 Power Query 中实现 if 语句
通常,“条件列”适用于一些基础场景。但当您需要结合 AND 或 OR 逻辑处理多个条件时,就必须在“自定义列”中编写 M 代码,以应对更复杂的场景。
示例 1:基本 if 语句
以第一组数据为例,若产品状态为“旧”,则显示 50% 折扣;若产品状态为“新”,则显示 20% 折扣。编写 M 代码时,请按以下步骤操作:
1. 选择表格,然后单击数据> 从表格/区域,即可进入 Power Query 编辑器窗口。
2. 在打开的窗口中,单击添加列 > 自定义列,参见截图:

3. 在弹出的自定义列对话框中,请执行以下操作:
- 在新列名称文本框中输入新列的名称;
- 然后,在自定义列的公式框中输入以下公式:if [Status] = "Old " then "50% " else "20% "。

4. 然后,单击确定关闭此对话框,即可获得所需结果:

5. 最后,单击开始> 关闭并加载> 关闭并加载,即可将此数据加载到新工作表中。
示例 2:复杂 if 语句
通常,要测试子条件,您可以嵌套多个 if 语句。例如,我有以下数据表:如果产品为“连衣裙”,则对原价给予 50% 折扣;如果产品为“毛衣”或“连帽衫”,则对原价给予 20% 折扣;其他产品保持原价。

1. 选择数据表,然后单击数据 > 从表格/区域,即可进入 Power Query 编辑器窗口。
2. 在打开的窗口中,单击添加列 > 自定义列。随后将弹出自定义列对话框,请执行以下操作:
- 在新列名称文本框中输入新列的名称;
- 然后,将下方公式输入到公式框中的自定义列。
- = if [Product] = "Dress" then [Price] * 0.5 else
if [Product] = "Sweater" then [Price] * 0.8 else
if [Product] = "Hoodie" then [Price] * 0.8
else [Price]

3. 然后,单击确定按钮,返回 Power Query 编辑器窗口,即可获得一个包含所需数据的新列,参见截图:

4. 最后,单击开始 > 关闭并加载 > 关闭并加载,即可将此数据加载到新工作表中。
OR 逻辑可执行多个条件判断,只要其中任一条件为真,即返回真值。其语法如下:
假设我有下表,现在我希望新增一列显示:若产品为“连衣裙”或“T 恤”,则品牌为“AAA”;其余产品的品牌为“BBB”。

1 请选择数据表,然后单击。数据> 从表格/区域,进入 Power Query 编辑器窗口。
2. 在打开的窗口中,单击添加列 > 自定义列,在弹出的自定义列对话框中,请执行以下操作:
- 在新列名称文本框中输入新列的名称;
- 然后,在自定义列公式框中输入下方公式。
- = if [Product] = "Dress" or [Product] = "T-shirt" then "AAA"
else "BBB"

3. 然后,单击确定按钮,返回 Power Query 编辑器窗口,您将获得一个包含所需数据的新列,参见截图:

4 最后,单击开始> 关闭并加载> 关闭并加载,将此数据加载到新的工作表中。
AND 逻辑可在单个 IF 语句中执行多个条件判断:仅当所有条件均为真时,结果才为真;只要任一条件为假,结果即为假。其语法如下:
以上述数据为例,我希望新增一列显示:若产品为“连衣裙”且订单数量大于 300,则应用 50% 折扣;否则,保留原价。
1 请选择数据表,然后单击。数据> 从表格/区域,进入 Power Query 编辑器窗口。
2 在打开的窗口中,单击添加列> 自定义列 在打开的自定义列对话框中,请执行以下操作:
- 在新列名称文本框中输入新列的名称;
- 然后,在自定义列公式框中输入下方公式。
- = if [Product] ="Dress" and [Order] > 300 then [Price]*0.5
else [Price]

3. 然后,单击确定按钮,返回 Power Query 编辑器窗口,您将获得一个包含所需数据的新列,参见截图:

4. 最后,您应通过单击开始 > 关闭并加载 > 关闭并加载,将此数据加载到新工作表中。
好的,前面的示例都比较简单易懂。现在,我们来提升难度——您可以灵活组合 AND 与 OR 逻辑,构建出任何您能想到的条件。在这类公式中,还能使用括号来明确复杂的规则。
同样以上述数据为例,假设我希望新增一列显示:若产品为“连衣裙”且订单数量大于 300,或产品为“长裤”且订单数量大于 300,则显示“A+”;否则显示“其他”。
1 请选择数据表,然后单击。数据> 从表格/区域,进入 Power Query 编辑器窗口。
2 在打开的窗口中,单击添加列> 自定义列 在打开后,自定义列对话框中,请执行以下操作:
- 在新列名称文本框中输入新列的名称;
- 然后,在自定义列公式框中输入下方公式。
- =if ([Product] = "Dress" and [Order] > 300 ) or
([Product] = "Trousers" and [Order] > 300 )
then "A+"
else "Other"

3. 然后,单击确定按钮,返回 Power Query 编辑器窗口,您将获得一个包含所需数据的新列,参见截图:

4. 最后,您应通过单击开始> 关闭并加载> 关闭并加载,将此数据加载到新工作表中。
在“自定义列”公式框中,您可以使用以下逻辑运算符:
- =:等于
- ≠:不等于
- >:大于
- >=:大于等于
- <:小于
- <=:小于等于
最佳办公效率工具
| 🤖 | KUTOOLS AI 助手:基于以下内容革新数据分析:智能执行 | 生成代码| 创建自定义公式 | 数据分析及生成图表| 调用 Kutools Functions…… |
| 热门功能:查找、高亮或标记重复项 | 删除空白行 | 合并列或单元格且不丢失数据 | 不使用公式的四舍五入…… | |
| 高级 LOOKUP:多条件 VLookup | 多值 VLookup | 跨多工作表 VLookup | 模糊查找…… | |
| 高级下拉列表:快速创建下拉列表 | 级联下拉列表 | 多选下拉列表…… | |
| 列管理器:添加指定数量的列|移动列|切换隐藏列的可见性状态|比较区域与列…… | |
| 特色功能:网格聚焦 | 设计视图 |增强编辑栏 | 工作簿和表管理器 | 资源库(自动文本)| 日期提取 | 汇总工作表 | 加密/解密单元格 | 按列表发送邮件 | 超级筛选 | 特殊筛选(筛选粗体单元格/斜体/删除线……) ...... | |
| 精选 15 工具集:12 文本工具(添加文本,删除特定字符,……)| 50+ 图表 类型(甘特图,……)| 40+ 实用公式(基于生日计算年龄,……)| 19 插入工具(插入二维码,从路径插入图片,……)| 12 转换工具(小写金额转大写,汇率转换,……)| 7 合并和拆分工具(高级合并行,分割单元格,……)|……更多 |
使用 Kutools for Excel 大幅提升您的 Excel 技能,体验前所未有的高效。Kutools for Excel 提供 300 多项高级功能,助您提升生产力、节省时间。立即点击此处,获取您最需要的功能……
Office Tab 为 Office 带来标签式界面,让您的工作更轻松
- 在 Word、Excel、PowerPoint、Publisher、Access、Visio 和 Project 中启用标签式编辑和阅读。
- 在同一个窗口的新标签页中打开并创建多个文档,而非在新窗口中。
- 将您的工作效率提升 50%,每天减少数百次鼠标点击!
所有 Kutools 插件,一个安装程序
Kutools for Office 套件捆绑了适用于 Excel、Word、Outlook 和 PowerPoint 的插件以及 Office Tab Pro,非常适合需要跨多个 Office 应用高效协作的团队。
- 一体化套件— Excel、Word、Outlook 和 PowerPoint 插件 + Office Tab Pro
- 一个安装程序,一个许可证— 几分钟内完成设置(支持 MSI)
- 协同效果更佳— 在多个 Office 应用中实现高效协同
- 30 天全功能试用— 无需注册,无需信用卡
- 超值之选— 比单独购买插件更省钱