ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 把每个药方中的每种药材,按数量的多少,重新先后排序

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-7-11 08:03 | 显示全部楼层 |阅读模式
本帖最后由 相见是缘8 于 2024-7-11 08:07 编辑

求各位老师帮忙,写个替换代码:


想把文档中,每个药方中的每种药材,按数量的多少,重新先后排序,数量相同的药材,只保留最后一种药材的数量,并在前面加上,各


如、1:


替换前:


组成:附子(熟)10克、干姜6克、鸡子黄1个、花椒子13粒(捣碎)。人参6克、白术(炙)10克、茯苓10克、陈皮6克、甘草(炙)6克、五味子3克、半夏(洗,去滑)10克、生姜3片、红枣4枚(切开)。


替换后:按“克、枚、段、片、粒、个”,先后进行排序)。


组成:附子(熟)、白术(炙)、茯苓、半夏(洗,去滑),各10克。干姜、人参、陈皮、甘草(炙),各6克、五味子3克、红枣4枚(切开)、生姜3片、花椒子13粒(捣碎)、鸡子黄1个。


如、2:


替换前:


组成:秦艽钱半、甘草六钱、川芎八两、当归一钱六厘、鸡子黄三个、白芍六钱、饴糖一升、细辛四钱、花椒子六十粒(捣碎)。羌活一钱二分、防风六钱三分、黄芩四钱、石羔七分二厘、白芷四厘、白术一斤半、荷叶二片(剪条)、生地半斤、熟地一斤二两四钱、茯苓五分、葱白三段、独活三两、红枣十二枚(切开)、生姜一两三钱(碎)。

替换后:按“升、斤、两、钱、分、厘、枚、段、片、粒、个”,先后进行排序)。


组成:饴糖一升、白术一斤半、熟地一斤二两四钱、川芎八两、生地半斤、独活三两、生姜一两三钱(碎)、防风六钱三分、甘草、白芍,各六钱、细辛、黄芩,各四钱、当归一钱六厘、秦艽钱半、羌活一钱二分、石羔七分二厘、茯苓五分、白芷四厘、红枣十二枚(切开)、葱白三段、荷叶二片(剪条)、花椒子六十粒(捣碎)、鸡子黄三个。

附件1.rar

9.64 KB, 下载次数: 14

TA的精华主题

TA的得分主题

发表于 2024-7-12 16:05 | 显示全部楼层
两个规则,少了一个“克”。添加后,是否可按按“升、斤、两、钱、分、厘、克、枚、段、片、粒、个”,先后进行排序

TA的精华主题

TA的得分主题

发表于 2024-7-12 17:57 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
大工程,写正则,分类汇总,再排序。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-12 18:42 | 显示全部楼层
snow653124 发表于 2024-7-12 16:05
两个规则,少了一个“克”。添加后,是否可按按“升、斤、两、钱、分、厘、克、枚、段、片、粒、个”,先后 ...

snow653124 老师好!
能满足要求就好!

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-12 19:00 | 显示全部楼层
ming0018 发表于 2024-7-12 17:57
大工程,写正则,分类汇总,再排序。

ming0018 老师好!
哈哈!老师有兴趣接这个“工程”吗?
以前求 sylun老师帮忙写了一个类似的,可本人水平未到,代码修改不了。


代码.rar

7.01 KB, 下载次数: 4

TA的精华主题

TA的得分主题

发表于 2024-7-12 21:31 | 显示全部楼层
楼主提供的实例,比楼主所说的要复杂得多,楼主只举了两个最多的情况。
PS:非常佩服sylun老师的耐心!恕我直言,这种挤牙膏的方式我非常讨厌,就算每次提出新的需求加钱都不愿意做。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-13 05:56 | 显示全部楼层
batmanbbs 发表于 2024-7-12 21:31
楼主提供的实例,比楼主所说的要复杂得多,楼主只举了两个最多的情况。
PS:非常佩服sylun老师的耐心!恕 ...

batmanbbs 老师好!
那个帖孒,确实难为 sylun 老师,我也不是故意挤牙膏,实是我水平不够,一时不能完全把问题说清,导致sylun老师和其他老师理解上的偏差,导致代码一次不能全部如愿,故……!

TA的精华主题

TA的得分主题

发表于 2024-7-13 06:26 | 显示全部楼层
相见是缘8 发表于 2024-7-12 18:42
snow653124 老师好!
能满足要求就好!

我可不是老师 我是为了自己工作轻松 自己摸索的 完全野路子
平时接触较多的是排版
这个东西,我知道涉及那几个方面,但是没做过
这个流程上说
1 正则,将药名+数量+单位提取出来,当如一个二维数组,第一个维度放前面的全称,第二个维度放单位
2 遍历数组。将第二维度单位与给定的单位顺序比对,冒泡算法,调整二位数组的值
3 输出时再判断数组前后是否数量一致,一致则改名
单个步骤我也会写,但思路与实际还是有差距的,我正在尝试。

TA的精华主题

TA的得分主题

发表于 2024-7-13 08:21 | 显示全部楼层
本帖最后由 batmanbbs 于 2024-7-13 08:45 编辑
snow653124 发表于 2024-7-13 06:26
我可不是老师 我是为了自己工作轻松 自己摸索的 完全野路子
平时接触较多的是排版
这个东西,我知道涉 ...

想简单了,看看sylun老师的代码就知道,根据楼主的示例,至少还需要增加如下内容:
(1)这个数组至少包括药名、数量、单位、查找到位置和长度
(2)个别药名分前后两部分(后半部分是处理方法),需要合并
(3)需要判断提取的每个药名位置是否相连,相连的才一起排序
(4)需要对汉字的数量转成阿拉伯数字进行比较,而且对个别数量需要进行特殊处理,比如百(不是一百)、半等(这里还有一个问题,就是确保数量的换算是10进制的,如果是中国古代的12进制、16进制会更加复杂)
(5)需要分类合并,相同单位和数量的药只用一个数量来表示
PS:
(1)sylun老师的那个提取药名剂量的正则表达式比这个示例复杂多了
(2)如果确保通用性,sylun老师的代码也并没有考虑到保留原格式、表格、浮动图片、书签等问题,难度是很大的
(3)楼主如果不提供全部文档,结果还是会和sylun老师编写代码的那贴一样挤牙膏,浪费过多的精力


TA的精华主题

TA的得分主题

发表于 2024-7-13 10:46 | 显示全部楼层
batmanbbs 发表于 2024-7-13 08:21
想简单了,看看sylun老师的代码就知道,根据楼主的示例,至少还需要增加如下内容:
(1)这个数组至少包 ...

确实是复杂
他这个组成:后,确实没太大规律。看一行一个规律,我还卡在正则匹配上
其他的也是写一步,发现又有新变化,头大。
全当是自己一个练习,这种的以前没写过
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-9-8 08:57 , Processed in 0.037598 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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