ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 对比两列的内容,找出相似的内容。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-5-15 11:30 | 显示全部楼层 |阅读模式
本帖最后由 Luckiestman 于 2024-5-15 11:32 编辑

问题背景:

(1) 表1,是公司内部的列表。MPN是我们系统内供应商的料号。
(2) 表2,是客户的列表。MPN是客户的系统。

通常,表2的MPN会比表1的MPN要更多,更全面。

由于表2是会一直更新变动的。所以,表2的MPN是变动的。

因此,我们在接收到表2之后,会去对比我们自己系统内部的所有MPN(表1),
假如表1的MPN都在表2的MPN里面的话,就没有任何问题。

我们会在表1的后面一列,加上表2对应的内容。


[G13] 和 [H13] 对比的逻辑(其余单元格都是该逻辑):

image.png

【H13】会有一些“_”的字符,是由于该材料在供应商的网站上就是这么标注的,另外,我们的客户不管具体是什么包装方式、等等,所以表2中没有具体的型号。

【G13】是我们选择型号之后的具体材料编号。

在对比的逻辑上,它们是一样的。


我尝试了许多方法,最接近正确答案的方式是:
通过添加自定义列将【H列】转换成List,再用 Text.Select 函数提取 【G列】,用提取后的结果 和 [H列] 对比,可以得到我要的结果。
但是,又遇到了特殊情况,就是选型的编号里面存在“0“,它重复出现了,
image.png
所以,这个时候得到的结果里多了一个“0”,会判断失误。

所以,小弟用尽了自己的办法,来求各位大佬指教。
谢谢!

image.png
image.png

问题.zip

13.59 KB, 下载次数: 13

找到相似内容!

TA的精华主题

TA的得分主题

发表于 2024-5-15 15:27 | 显示全部楼层
1. 用PQ把下划线部分都替换成通配符
2. 应用DAX函数中的SEARCH达成模糊匹配的效果
图片.png
图片.png

对比匹配.zip

54.75 KB, 下载次数: 5

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-5-15 18:45 | 显示全部楼层
一切模糊匹配都是徒劳,所谓差之毫厘,谬以千里
你还是先整理一个对照表(以后积累更新),再用合并查询(同时调用对照表)进行查询合并。

TA的精华主题

TA的得分主题

发表于 2024-5-16 10:34 | 显示全部楼层
kirete 发表于 2024-5-15 15:27
1. 用PQ把下划线部分都替换成通配符
2. 应用DAX函数中的SEARCH达成模糊匹配的效果

柴进:好手段!

TA的精华主题

TA的得分主题

发表于 2024-5-16 10:41 | 显示全部楼层
客户表里字段中间有特殊字符,需要先转换。

建议将匹配出多个的结果再手动排查一下,试试:
  1. let
  2.     源 = Excel.CurrentWorkbook(){[Name="表2"]}[Content],
  3.     提取 = Table.AddColumn(源, "a", each Text.SplitAny([Customer MPN],Text.Remove([Customer MPN],{"a".."z","A".."Z","0".."9","%","/","-"})){0}),
  4.     初步匹配 = Table.AddColumn(提取, "b", each Table.SelectRows(表1, (x)=>Text.Contains(x[Company MPN],[a])  )),
  5.     展开 = Table.ExpandTableColumn(初步匹配, "b", {"Company MPN"}, {"Company MPN"}),
  6.     分组的行 = Table.Group(展开, {"Company MPN"}, {{"匹配个数", each Table.RowCount(_)},{"匹配Customer MPN", each Text.Combine([Customer MPN]," , ")}})
  7. in
  8.     分组的行
复制代码


0.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-16 11:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
kirete 发表于 2024-5-15 15:27
1. 用PQ把下划线部分都替换成通配符
2. 应用DAX函数中的SEARCH达成模糊匹配的效果

大佬,我下载了你的附件。
可能由于我不懂DAX公式。
我看PP里面显示,那个度量值是错误的。。。

TA的精华主题

TA的得分主题

发表于 2024-5-16 11:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 xieshudi 于 2024-5-17 10:44 编辑

模糊匹配不全,看看这个笨办法是否符合你的要求

问题.rar

19.16 KB, 下载次数: 4

TA的精华主题

TA的得分主题

发表于 2024-5-16 13:56 | 显示全部楼层
1. PQ加载其中一个查询到工作表
2. 鼠标右键点击加载的表格,“表格”->“编辑DAX”
3. 命令类型:DAX,添加“EVALUATE”,回车后复制代码即可
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-25 15:33 , Processed in 0.045572 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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