[已解决] 请教:如何简化语句进行查询匹配问题

  [复制链接]
查看159755 | 回复144 | 2021-2-19 00:05:09 | 显示全部楼层 |阅读模式
各位老师好,有如下问题请教。
问题如下:现有两个列字段:【关键字】【等级】,需要将【名称】与【关键字】进行判断,【名称】中含【关键字】则将对应的【等级】显示出。
【关键字】是不断进行更新和补充的,每一个关键字对应不同的等级。
需要将【名称】与【关键字】进行逐一匹配,并将符合的关键字对应的等级显示出来。
目前的做法如下:
设置等级分类 = Table.AddColumn(归属地区, "等级分类", each if Text.Contains([名称], "关键字1") then “等级1” else if
Text.Contains([名称], "关键字2") then “等级2”else if

只要关键字进行了更新补充,上述就增加 else if语句,导致语句需要不断增加。
有没有简化的判断匹配语句,可以实现即使【关键字】进行了更新补充,语句不用增加可以将新增的包含在内进行匹配。

新人一枚,谢谢。
回复

使用道具 举报

台风 | 2021-2-19 00:11:09 | 显示全部楼层
可以试试这个先:
其中,{{k1,v1},{k2,v2},{k3,v3}...}这部分是关键字等级一一对应的list,是由多组lists组成的list。如果有一个"关键字等级参照表",可以由Table.ToRows(关键字等级参照表)得到,或者你手动输入{{"关键字1","等级1"},{"关键字2","等级2"},{"关键字3","等级3"}....}。事先构建"关键字等级参照表"为上策。
  1. = Table.AddColumn(归属地区, "等级分类", each List.Select({{k1,v1},{k2,v2},{k3,v3}...},(x)=>Text.Contains([名称], x{0})){1})
复制代码
回复

使用道具 举报

vanmarco | 2021-2-19 00:17:09 | 显示全部楼层
我的做法是新建一个表,记录【关键字】【等级】的关系,然后在需要标注等级的表上,用关键字列去合并查询。相当于vlookup的效果
回复

使用道具 举报

wto | 2021-2-19 00:21:10 | 显示全部楼层
可以试试这个先:
其中,{{k1,v1},{k2,v2},{k3,v3}...}这部分是关键字等级一一对应的list,是由多组lists ...


谢谢回复,麻烦有时间能把公式中后面内容(x)=>Text.Contains([名称], x{0})){1})再稍微解释一下可以吗,刚接触excel这块内容,对于函数使用还是不能很好理解和掌握,目前努力学习中,万分感谢。主要是对x{0})){1}不是很理解用法。
回复

使用道具 举报

sasjk | 2021-4-30 16:47:11 | 显示全部楼层
这个不错,学习了
回复

使用道具 举报

hailar | 2021-5-28 11:24:31 来自手机 | 显示全部楼层
支持,一直很喜欢老师的课程
回复

使用道具 举报

凯门鳄 | 2021-7-4 09:16:13 来自手机 | 显示全部楼层
这个视频很不错,推荐一下
回复

使用道具 举报

新精英 | 2021-7-14 20:47:35 | 显示全部楼层
打酱油的人拉,回复下赚取积分
回复

使用道具 举报

mc198022 | 2021-8-24 13:58:34 来自手机 | 显示全部楼层
这个不错,学习了
回复

使用道具 举报

jilang | 2021-10-1 16:52:37 来自手机 | 显示全部楼层
楼下的接上
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则