ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 又来匹配型号并提取,不要定制要通用性

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-11-12 20:20 | 显示全部楼层
目前附件内容里按照空格拆分的结果
如果是其他不可见字符,可以考虑正则表达式拆分的
演示.gif

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-11-12 20:33 | 显示全部楼层
本帖最后由 woniu3721 于 2022-11-12 20:36 编辑
liulang0808 发表于 2022-11-12 20:20
目前附件内容里按照空格拆分的结果
如果是其他不可见字符,可以考虑正则表达式拆分的

空格不是不可见字符,而是可见的中文,或者冒号等号之类的,他作为商标和型号之间的分隔。为了避免眼花缭乱造成误导,所以以空格隔开,这个必须正则,否则无法拆分。

TA的精华主题

TA的得分主题

发表于 2022-11-12 20:35 | 显示全部楼层
woniu3721 发表于 2022-11-12 20:33
空格不是不可见字符,而是可见的中文,或者冒号等号之类的,他作为商标和型号之间的分隔。为了避免误导, ...

如果楼主的问题还没有解决,建议上传有针对性的文档附件。。。。

TA的精华主题

TA的得分主题

发表于 2022-11-12 23:34 来自手机 | 显示全部楼层
woniu3721 发表于 2022-11-12 20:18
你这玩意儿,我只要加一个中文就匹配不出来了,不要把型号以外的字符匹上去。

你自己来吧

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2022-11-13 09:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 准提部林 于 2022-11-13 10:02 编辑
woniu3721 发表于 2022-11-12 20:18
你这玩意儿,我只要加一个中文就匹配不出来了,不要把型号以外的字符匹上去。

看到了..發了兩帖~~想看看有無不用正則的方法



TA的精华主题

TA的得分主题

发表于 2022-11-13 10:22 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这是楼主给大家出考试题吗?不象是求助啊

TA的精华主题

TA的得分主题

发表于 2022-11-13 11:07 来自手机 | 显示全部楼层
通用性的前提条件就是规范性。俗话说没有规矩不成方圆。建议先把数据中的中文 冒号 逗号等都替换成空格,并且只留一个空格,再分就简单了。做不到就很难讲究通用性了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-11-13 12:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
lkqsmxw 发表于 2022-11-13 11:07
通用性的前提条件就是规范性。俗话说没有规矩不成方圆。建议先把数据中的中文 冒号 逗号等都替换成空格,并 ...

你这个思路倒是不错,那些不要的全部替换成空格倒是不难,但每条数据替换后的空格数量是不同的,最关键的是这个纯英文的字符串不好排除的,当然后面的纯数字就不管他了,因为你取是从左往右取,始终迈不过英文商标

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-11-13 12:31 | 显示全部楼层
准提部林 发表于 2022-11-13 09:46
看到了..發了兩帖~~想看看有無不用正則的方法

这个帖子里内容当然可以不用正则,你看我上一个帖子就晓得了,用正则能解决90%的,只不过他们写的正则很复杂,但如果不用正则的话,估计就只能解决10%的内容,因为这个空格实际上包含的是五花八门的东西。以前有个网友写了一个正则,很简单,准确率也很高,放在任何条件下都行,几乎就是万能,唯一的缺点就是遇到如果前面有英文商标的就失灵了,当然有英文商标的这种情况也不多,现在考虑把英文商标先干掉,就没问题了。
Set reg = CreateObject("vbscript.regexp")
    reg.Global = True
    reg.Pattern = "^.*?([\w-()/\+\.@]{2,})|.+"
    ar = Range([b2], [b2].End(4))
    For i = 1 To UBound(ar)
        ar(i, 1) = reg.Replace(ar(i, 1), "$1")
    Next
    [c2].Resize(UBound(ar), 1) = ar

TA的精华主题

TA的得分主题

发表于 2022-11-13 13:07 来自手机 | 显示全部楼层
woniu3721 发表于 2022-11-13 12:17
你这个思路倒是不错,那些不要的全部替换成空格倒是不难,但每条数据替换后的空格数量是不同的,最关键的 ...

用替换,把两个空挌替换成一个空格就行了。

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-20 16:45 , Processed in 0.034455 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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