ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 请高手指点对长字符串的有效拆分

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-3-31 00:03 | 显示全部楼层 |阅读模式
无力吐槽这破工单系统了,内容部分又臭又长,超过255个字符。从系统里导出后,拿EXCEL看非常不方便,眼都可以看晕。当时导入ACCESS时,老师格式选长文本,发现导入后再导出老是丢了很多内容,后发现去掉@才成功导入。


想把内容里拆分成规范的字段,方便分析及后期做相关处理。
已知是用来间隔各字段,但里面的长度、内容、包扩固定格式还有不一致的。
有些有内容,有些重要内容又填到不相关的字段,如第4例的红字。选择分列,错位明显,希望在ACCESS里能够处理出较为规范的数据。

本人有点点ACCESS基础,比小白多一点而已。求各位大神指点,感激不尽!

(原始平台是一班妹子填的,千人千面,就算统一培训,依然有很多不规范的地方。导致系统了的内容就看瞎眼,想批量处理难度直线上升,再次吐槽)

NSD3N]YE}R2]T418CP}2[PP.jpg


内容拆分.rar

9.4 KB, 下载次数: 4

有代表性的内容例子

TA的精华主题

TA的得分主题

发表于 2022-3-31 05:45 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
力吐槽这破工单系统了

如果数据分析比较多,能否考虑重构一下 工单系统

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-3-31 08:54 | 显示全部楼层
zpy2 发表于 2022-3-31 05:45
力吐槽这破工单系统了

如果数据分析比较多,能否考虑重构一下 工单系统

前辈吐槽的对,但真无力重构系统,那都是些不接地气非一线的的高级人材搞出来的(也许外包的)。

主要是用1个平台,上千人操作录入,对应百万级信息来源。想标准的让人开心,我觉的也是个天大的难题。
只是希望在二次处理时,能把信息规范起来,大的规律性还是有,就是如何处理才能包容那些可能存在的不规范的内容?想破头了。

希望各位前辈、高手给挑战一下,谢谢!

TA的精华主题

TA的得分主题

发表于 2022-3-31 10:27 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
sjdzzzz 发表于 2022-3-31 08:54
前辈吐槽的对,但真无力重构系统,那都是些不接地气非一线的的高级人材搞出来的(也许外包的)。

主要 ...

主要是用1个平台,上千人操作录入,对应百万级信息来源。

如果真如你所言,百万级信息,你这样导出一次数据,需要多久?如果是百万级的数据分析,恐怕不是excel能完成的,有专门的大数据平台。

TA的精华主题

TA的得分主题

发表于 2022-3-31 11:30 | 显示全部楼层
重整一下資料
  1. Sub zz()
  2. Dim a, d As Object, b(), k, t, s$
  3. Set d = CreateObject("scripting.dictionary")
  4. a = Range("c2:c" & [c65536].End(3).Row)
  5. With CreateObject("vbscript.regexp")
  6.     .Global = True
  7.     .Pattern = "[\u4e00-\u9fa5]+(?=:)"
  8.     For i = 1 To UBound(a)
  9.         For Each m In .Execute(a(i, 1))
  10.             d(CStr(m)) = ""
  11.         Next
  12.     Next
  13.     k = d.keys
  14.     ReDim b(1 To UBound(a) + 1, 1 To d.Count)
  15.     For j = 1 To UBound(b, 2)
  16.         b(1, j) = k(j - 1): d(k(j - 1)) = j
  17.     Next
  18.     .Pattern = "[\u4e00-\u9fa5]+:.*?(?=;)"
  19.     For i = 1 To UBound(a)
  20.         For Each m In .Execute(a(i, 1))
  21.             t = Split(m, ":")
  22.             b(i + 1, d(CStr(t(0)))) = t(1)
  23.         Next
  24.     Next
  25. End With
  26. Workbooks.Add 1
  27. [a1].Resize(i, d.Count) = b
  28. End Sub
复制代码

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-3-31 16:11 | 显示全部楼层

感谢前辈,很有启发。正在仔细研读中。谢谢!不懂的地方再来请教。

image.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-3-31 16:14 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
zpy2 发表于 2022-3-31 10:27
主要是用1个平台,上千人操作录入,对应百万级信息来源。

如果真如你所言,百万级信息,你这样导出一 ...

Kenny前辈帮忙处理了下EXCEL下的,还在研读中。

对于您的疑问,其实我的意思是,平台是全国性的,所以导致接单的小姐姐是一个信息中转的池子,所以这个数据录入就变化多端,大体规矩是有,但各种不严谨的地方太多。

至于数据量,我这边当然只是负责我们区域内的,数据量不是那么大,1个月千把条而已。目前在分析2年的内容,逐条那也是非人的待遇。所以想着偷下懒。还请看在ACCESS上如何搞搞,谢谢!

TA的精华主题

TA的得分主题

发表于 2022-4-1 13:32 来自手机 | 显示全部楼层
sjdzzzz 发表于 2022-3-31 16:14
Kenny前辈帮忙处理了下EXCEL下的,还在研读中。

对于您的疑问,其实我的意思是,平台是全国性的,所以 ...

数据量不多,excel足矣,access的sql不支持正则表达式,也是一样的循环。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-23 07:06 , Processed in 0.047662 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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