[已解决] 关于多列循环匹配

  [复制链接]
查看175594 | 回复151 | 2020-11-5 23:52:34 | 显示全部楼层 |阅读模式
想请假各位大佬,如有两列文本,第一列包含第二列的内容,现在我想如果在第一列的元素中在第二列找到,就显示第二列的内容。类似VBA中like的方法,但VBA中循环可在匹配后跳出循环,不知道PQ能不能有类似的方法?目前能想到的是Table.TransformColumns+Text.Contains,但是具体的写法有点迷,也不知道有没有跳出循环的方法,请大佬写个让我参考学习一下。如附件,感谢。

10661102340133.zip (13.45 KB, 下载次数: 0)
回复

使用道具 举报

KEKE1983 | 2020-11-6 00:00:34 | 显示全部楼层
PQ参考解法
10661102340131.png
10661102340134.zip (16.12 KB, 下载次数: 0)
回复

使用道具 举报

qqwwee | 2020-11-6 00:05:35 | 显示全部楼层
PQ参考解法


好的 谢谢大佬 我学习下 感谢
回复

使用道具 举报

阿佳 | 2020-11-6 00:08:35 | 显示全部楼层
10661102340132.png
回复

使用道具 举报

kelisi | 2020-11-6 00:15:35 | 显示全部楼层
谢谢大佬的不同解法 可以好好研究了 我现在刚学 对上下文的概念还是很懵
回复

使用道具 举报

Hemry | 2020-11-6 00:18:35 | 显示全部楼层
PQ参考解法


请教大佬,为何这里面都没用到遍历函数?如果(x)=>x就可以遍历,那遍历函数是什么情况下用?
回复

使用道具 举报

qqboy | 2020-11-6 00:22:36 | 显示全部楼层
请教大佬,为何这里面都没用到遍历函数?如果(x)=>x就可以遍历,那遍历函数是什么情况下用?
回复

使用道具 举报

波柱 | 2020-11-6 00:27:36 | 显示全部楼层
很高兴有两个大佬看到我的提问,也让我大致知道PQ的运作方式,接着这个问题继续又发现了两个新的问题,希望大佬解疑
1按这两种方式,如果[网点]内容出现不包含[银行]表元素内的情况就回出现null,但是null又不属于错误,所以如果想把所有的null变更为''未找到"应该怎么写?我感觉应该可以在(x)=>内解决
2感觉PQ是针对整列进行操作,所以try或者if写在这个公式中的时候应该是怎么写的?逻辑知道,不知道语法,PQ的错误提示也看不懂.
回复

使用道具 举报

老何 | 2020-11-6 00:33:36 | 显示全部楼层
= Table.AddColumn(Source1,"银行",each List.Accumulate(Source2[银行],"无匹配", (s,c)=>if Text.Contains(_[网点],c) then c else s))
如果你非要遍历,可以试试这个
回复

使用道具 举报

tv19791014 | 2020-11-6 00:37:36 | 显示全部楼层
= Table.AddColumn(Source1,"银行",each List.Accumulate(Source2[银行],"无匹配", (s,c)=>if Text.Contain ...


感谢解答,现在已经搞明白了,就是感觉在Accumulate里 参数是反过来放的怪怪的,y,x,(x,y)
回复

使用道具 举报

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

本版积分规则