ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 修改次序混乱不同的数量单位和重复的数量单位

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-9-12 11:29 | 显示全部楼层
相见是缘8 发表于 2022-9-12 06:04
sylun 老师好!刚测试了你该楼更新的代码(运行不了,你可能漏掉了《NumToCnNum》宏,加上就好了),“百升 ...

是没放NumToCnNum过程了,用64楼附件中的NumToCnNum就行。刚才再用67楼附件代码及你提供的模拟文档测试了一下,结果如下图,但与楼主提供的截图并不一致,不知什么魇因。至于含“百”与“一百”的处理效果及解决办法,前面已有大概说明。 处理结果.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-9-12 14:07 | 显示全部楼层
sylun 发表于 2022-9-12 11:29
是没放NumToCnNum过程了,用64楼附件中的NumToCnNum就行。刚才再用67楼附件代码及你提供的模拟文档测试了 ...

sylun 老师好!
我俩测试的结果不一致,原因是我加了你47 楼《NumToCnNum》宏导致的,刚加了你64 楼《NumToCnNum》宏,测试的结果和你一样了。
老师,奇怪了,第一段的“百升”及百字前面带有数字的都处理得完美了,可第二段的“百升”及百字前面带有数字的(见图)……?
9.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-9-17 07:09 | 显示全部楼层
本帖最后由 相见是缘8 于 2022-9-17 10:51 编辑
sylun 发表于 2022-9-12 11:29
是没放NumToCnNum过程了,用64楼附件中的NumToCnNum就行。刚才再用67楼附件代码及你提供的模拟文档测试了 ...

sylun 老师好!
今天在一本(9百多页预整理好的)文档上,测试该代码,运行不了,弹出“提示框”提示:无效的过程调用或参数。
点开该“提示框”中的“帮助”,弹出提示如下:
Hicrosoft Office Word 帮助
无效的过程调用或参数(错误5)
请参阅  特性
有些调用操作不能完成。此错误有以下的原因和解决方法:
参数值可能超出了允许的范围。例如,Sin 函救只接受特定范围的值。正的参数小于 2,147,483,648 的是可接受的,而等于 2,147,483,648 则会产生错误。
检查参数的许可范围。
如果所要调用的过程,不适于当前平台的话,也会发生此错误。例如,有些程序可能只应用到 MosotWindows 或 Macintosh 等。
检查过程的特定平台信息。
详细信息,可选取有问题的项目,并按下F1 (在 Wizdows 中)或HELP (在 Macintosh 中)键。


我水平不够,还请你看看,要怎么弄才可?

1.png
2.png

TA的精华主题

TA的得分主题

发表于 2022-9-17 23:48 | 显示全部楼层
相见是缘8 发表于 2022-9-17 07:09
sylun 老师好!今天在一本(9百多页预整理好的)文档上,测试该代码,运行不了,弹出“提示框”提示:无 ...

对于要处理这种复杂要求的文本,如果没有实际文档,是很难想象可能出现的各种情况的。之前楼主已提供过两次文档了,现在的截图应该有新的格式要求。所以还是那句,请提供有代表性的实际文档,不要只是一两页,并说明可能的问题,如果还有新的格式要求也再一并说明吧,否则没有多少修改的意义,毕竟修改一次可能很费时的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-9-18 07:49 | 显示全部楼层
sylun 发表于 2022-9-17 23:48
对于要处理这种复杂要求的文本,如果没有实际文档,是很难想象可能出现的各种情况的。之前楼主已提供过两 ...

sylun 老师好!
一直未提供“实际文档”,是因文档还未整理好。
我昨天后来一想:该代码,在未整理好的文档上,运行不了,是不是文档里面的东西太乱造成的,后来我再把原来的“测试附件”里的内容,反复[复制粘贴]成一个1千多页的“模拟文档”,再在该上面运行代码,结果运行了一会,弹出“提示框”提示:溢出。
点开该“提示框”中的“帮助”,弹出提示如下:
溢出(错误6)
特性
当赋值超出目标的限制时,就会发生溢出。此错误有以下的原因和解决方法:
赋值、计算或数据类型的结果的转换太大,以致于不能在变量类型所允许的范围内表示出来。
赋值给足够表示值的范围的类型的变量上。
给属性的赋值超过属性能接受的最大值。
确保赋值适合属性的范围。
试图在计算中使用一个数字,并且该数字被强制为一个整数,但是结果超过了整数的范围,例如:
Dim x As Long
x =2000 *365  '错误:溢出。
要解决这个问题,请按如下方式键入该数字:
Dim x As Long
x = CLng(2000) * 365
详细信息,可选取有问题的项目,并按下F1 (在Windows中)或HELP (在Macintosh中) 键。

1.png
2.png

模拟文档.rar

194.85 KB, 下载次数: 11

预整理文档.rar

1.99 MB, 下载次数: 12

TA的精华主题

TA的得分主题

发表于 2022-9-18 14:47 | 显示全部楼层
相见是缘8 发表于 2022-9-18 07:49
sylun 老师好!一直未提供“实际文档”,是因文档还未整理好。我昨天后来一想:该代码,在未整理好的文档 ...

刚才测试了楼主两个新附件文档,发现模拟文档共有246万多字符,17万余个匹配,实际排序的有18522个方剂配伍组合。而预处理文档有127万多字符,2万余个匹配,实际排序的也有3714个配伍组合。
出错原因:原代码因计数用Integer数据类型,其可支持的匹配仅为3万余个,导致模拟文档出错;而预处理文档中有3个药材剂量表述为“一二两”“四五钱”“二三分”之类,只是约数,原程序无法比较大小,导致出错。另,预处理文档处理结果多了一个段落数,没有具体比较。没有发现其他错误提示。程序运行时间:前一个附件约6分钟,后一个约40秒。
现新附件的代码将计数变量改为Long类型,对无法比较的约数剂量只进行特别标记不予排序(前面标注“◆”符号但不另行计数),请楼主详细测试。如有其他问题,请楼主尽量尝试自行解决。 代码文本3.zip (2.76 KB, 下载次数: 9)

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-9-19 07:52 | 显示全部楼层
sylun 发表于 2022-9-18 14:47
刚才测试了楼主两个新附件文档,发现模拟文档共有246万多字符,17万余个匹配,实际排序的有18522个方剂配 ...

sylun 老师好!

代码现在可以正常运行了,我在“模拟文档”和“预处理文档”上,分别各测了2次,在我这个破电脑上,“模拟文档”用时1小时36分钟左右,“预处理文档”用时28分钟左右。耗时这么长,一个可能是电脑的配置低,二个不知电脑帮定了“仓储软件”有不有关?

sylun 老师,现在有了你的这个代码加身,使我这几个文档原本“瑶瑶无期”的整理时间,使变得“指日可待”,是老师的知识让我有了这个“加速器”,内心万分感激!

老师你不单是技术顶尖,脾气也非常好,还有一颗帮人的善心,这三者容一身真是难得!从我的感知而言,你和413191246se老师,两人的脾气最好,最愿帮人(能有幸经常得到两位老师的帮助,是我的幸运)!不像有的老师,技术虽好,问求他二次就不理了,甚至发脾气骂人,真是让人难堪……!正如书上所说“一流人才,技术好,脾气好;二流人才,技术好,脾气差;三流人才,技术差,脾气差”……!

非常感谢老师你这一个多月来,不厌其烦的帮助和辛劳付出!跪拜!!!

最后,再请问老师,这个Long计数变量,最多可匹配多少,因我还有2本各为3千多页的文档要整理。

TA的精华主题

TA的得分主题

发表于 2022-9-20 23:01 | 显示全部楼层
相见是缘8 发表于 2022-9-19 07:52
sylun 老师好!

代码现在可以正常运行了,我在“模拟文档”和“预处理文档”上,分别各测了2次,在我 ...

楼主过奖了。我接下这项目一来想帮帮你老表,感觉现在专心学中医的不多了,难得;二来也想练练手,摸索一下正则处理复杂文本的办法。其实代码文本3只是对配伍组合中用量均为大约数时才作特殊标记,预处理文档中对只是部分为大约数的配伍组合会抹去该大约数项的。有删减是不应该的,找个时间再修改一下,代码行会增多,但代码运行时间过长运行低效也不好。
多步骤操作超大word文档本身就会占用较大内存,循环语句过复杂也会降低处理速度。楼主运行宏时最好尽量关闭不必要的程序。至于Long数据类型,上限超9位数,肯定足够用了。数据类型是学习编程的基础,楼主最好自己查看一下相关解释吧。

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-9-21 08:15 | 显示全部楼层
sylun 发表于 2022-9-20 23:01
楼主过奖了。我接下这项目一来想帮帮你老表,感觉现在专心学中医的不多了,难得;二来也想练练手,摸索一 ...

sylun 老师好!

我弟弟学中医,要感谢413191246se老师的徒弟 13907933959朋友,我俩也真是缘分!老师你如有时间和兴趣可点开下面的网址看一下。
https://club.excelhome.net/forum.php?mod=viewthread&tid=1406961

作为兄长的我也帮不上我弟弟什么忙,他学中医后,经常有些文档电子书之类的要整理,他一个不会这个,二个也真改没时间,就让我为他整理,其实我也不愿整理,因如用手动整理太耗时,用VBA,我又不会写,所以经常上论坛向你和老师们求助,求助多了自己也不好意思,但为了鼓励和让他多腾一些时间来学中医,我也就硬着脸皮上!

老师,你说这文本3内的代码,“会抹去该大约数项的。有删减是不应该的”,是会删除部分药材名和数量单位吗?这个我只在“模拟文档”上核对过,而在真实的文档上没有核对,如真会删除部分药材名和数量单位,哪现在我就还不能用了,等你修改后再用。

老师,如代码运行时间长一些,只要替换结果准确,也没关系,再慢比手工替换也要快千万倍,这样劳你下去我都难为情了!

我用的是我打工公司的电脑,电脑帮定了“仓储软件”,电脑一打开,它就打开了,这个“仓储软件”,凭我的水平还关不了(公司的其他同事也说关不了),电脑的XP系统和2003版本的office,都不能升级,否则这个“仓储软件”就用不了。

老师,你说的这个Long数据类型,上限超9位数,是最大的匹配,可支持上亿个,是吧?

TA的精华主题

TA的得分主题

发表于 2022-9-21 22:12 | 显示全部楼层
相见是缘8 发表于 2022-9-21 08:15
sylun 老师好!

我弟弟学中医,要感谢413191246se老师的徒弟 13907933959朋友,我俩也真是缘分!老师 ...

再次对代码进行更新,换了另一种对匹配进行循环比较的方法,对大约数等不能识别数量的匹配不作大小排序,归于同量词的匹配最后,只在前面标记有“★”号。只经简单测试,模拟文档用时3分钟左右,预处理文档40多秒。没有进行具体核对。详细核对工作还得由楼主进行了。 代码文本4.zip (2.93 KB, 下载次数: 19)

评分

2

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-22 06:32 , Processed in 0.038036 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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