ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2050|回复: 5

[求助] 怎样利用POWER QUERY实现多条件判断后求值

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-6-12 00:09 | 显示全部楼层 |阅读模式
本帖最后由 niqiuyu 于 2021-6-13 18:21 编辑

      请老师们指导:怎样使用power query通过C列“package_weight”和D列“索引”列多条件判断后求值,谢谢!
1、当D列索引等于“AHAN46”或"AHAN48"或“AHAN49”或"AHAN56"或“THAN90”或"THAN91”或“THAN92”或“THAN93”并且C列的package_weight大于0小于等于1.5时在E列填写C列的重量值,否则填写0;

2、当D列索引等于“AHAN46”或"AHAN48"或“AHAN49”或"AHAN56"或“THAN90”或"THAN91”或“THAN92”或“THAN93”并且C列的package_weight大于1.5小于等于2时在F列填写1,否则填写0;

3、当D列索引等于“AHAN46”或"AHAN48"或“AHAN49”或"AHAN56"或“THAN90”或"THAN91”或“THAN92”或“THAN93”并且C列的package_weight大于2小于等于3时在G列填写1,否则填写0.

图片中的AHAN51和AHAN45不符合条件所以此两行的值为0(希望获得的结果请参考图片1)
image.png                  

我是刚刚开始学习powerquery的小白,还不会使用M语言编写代码,尝试录入添加条件列的方式录入以下代码,但是得到的计算结果中有部分结果是错误的(参考图片2),请老师们帮忙修改一下代码,谢谢!
let
    源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
    更改的类型 = Table.TransformColumnTypes(源,{{"bag_id", type text}, {"package_number", type text}, {"package_weight", type number}, {"索引", type text}}),
    小于1.5kg = Table.AddColumn(更改的类型, "小于1.5kg", each if [索引]="AHAN46" or [索引]="AHAN48" or [索引]="AHAN49" or [索引]="AHAN56" and [package_weight]>0 and [package_weight]<=1.5 then [package_weight] else 0),
    #"1.5~2kg" = Table.AddColumn(小于1.5kg, "1.5~2kg", each if [索引]="AHAN46" or [索引]="AHAN48" or [索引]="AHAN49" or [索引]="AHAN56" and [package_weight]>1.5 and [package_weight]<=2 then 1 else 0),
    #"2~3kg" = Table.AddColumn(#"1.5~2kg", "2~3kg", each if [索引]="AHAN46" or [索引]="AHAN48" or [索引]="AHAN49" or [索引]="AHAN56" and [package_weight]>2 and [package_weight]<=3 then 1 else 0)
in
    #"2~3kg"


image.png

多条件判断后求值.zip

371.25 KB, 下载次数: 13

TA的精华主题

TA的得分主题

发表于 2021-6-12 07:24 来自手机 | 显示全部楼层
添加条件列,依次输入条件即可

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-6-12 11:35 | 显示全部楼层
sake.su 发表于 2021-6-12 07:24
添加条件列,依次输入条件即可

我刚刚开始也是插入条件列然后依次输入代码,但是发现计算结果中有些值是错误的,
找不到错误的原因和解决方法,所以现在来向大家求助解决方法

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-6-16 22:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
请老师们帮助指点一下我的问题是出在了什么地方,谢谢!

TA的精华主题

TA的得分主题

发表于 2021-6-17 03:28 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
只是逻辑运算符or和and运算优先级的问题,
image.png image.png

另外,
  1. if [索引]="AHAN46" or [索引]="AHAN48" or [索引]="AHAN49" or [索引]="AHAN56" and [package_weight]>0 and [package_weight]<=1.5 then ...
复制代码
写为
  1. if List.Contains({"AHAN46","AHAN48","AHAN49","AHAN56"}, [索引]) and [package_weight]>0 and [package_weight]<=1.5 then ...
复制代码
技能避免逻辑表达式运算优先级的问题,又更为简洁,增加了代码的可读性。

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-6-18 00:20 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
ThxAlot 发表于 2021-6-17 03:28
只是逻辑运算符or和and运算优先级的问题,

非常感谢老师的热心帮助!谢谢!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-15 22:27 , Processed in 0.033259 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表