ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何实现模糊匹配

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-7-3 15:58 | 显示全部楼层 |阅读模式
本帖最后由 yzlxyz 于 2013-7-3 16:00 编辑

最近工作遇到一个问题,先简述下该EXCEL:
1、“西药”工作表是药品的一个标准分类,譬如第一列显示的是关于青霉素的分类
1抗微生物药物
1.1抗生素类药物
1.1.1β内酰胺类药物
1.1.1.1青霉素类药物
1.1.1.1.1窄谱天然青霉素类药物

甲类
1
1010101010100190001
青霉素
2、“sheet1”是某家公司的具体品种,包括原料药和各种制剂:
青霉素
注射用青霉素
青霉素片
青霉素胶囊
青霉素V胶囊
我现在,就是希望能够在“sheet1”中每个具体药品后面自动添加其归属,如:
青霉素1抗微生物药物
1.1抗生素类药物
1.1.1β内酰胺类药物
1.1.1.1青霉素类药物
1.1.1.1.1窄谱天然青霉素类药物
注射用青霉素
青霉素片
青霉素胶囊
青霉素V胶囊
我现在只能实现前面第一个,即青霉素的匹配;
由于“西药”工作表给出的仅仅是“青霉素”这个关键原料药,没有相应的制剂
由于我不会模糊匹配,所以后面,如“注射用青霉素”、“青霉素片”等具体的制剂无非实现
望各位老师给予指点(随附件),谢谢了

新建文件夹.rar

22.41 KB, 下载次数: 112

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-7-3 16:01 | 显示全部楼层
自己先顶下

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-7-3 16:02 | 显示全部楼层
求各位老师现身;同时还觉得自己写的这个VBA好像有点累赘,求指导,先谢过了

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-7-3 16:04 | 显示全部楼层
yzlxyz 发表于 2013-7-3 16:02
求各位老师现身;同时还觉得自己写的这个VBA好像有点累赘,求指导,先谢过了

顺便先贴上自己写的VBA
Sub 自动匹对()
    Dim a%, b%, i As String
    lastrow = Range("A65536").End(xlUp).Row
    For n = 1 To lastrow
        i = Cells(n, 1).Value
        If i <> "" Then
        a = 1
            Do While Worksheets("西药").Cells(a, 10).Value <> ""
                If Worksheets("西药").Cells(a, 10).Value = i Then
                    Cells(n, 2).Value = Worksheets("西药").Cells(a, 1).Value
                End If
                a = a + 1
            Loop
       End If
    Next
End Sub

TA的精华主题

TA的得分主题

发表于 2013-7-3 16:23 | 显示全部楼层
yzlxyz 发表于 2013-7-3 16:04
顺便先贴上自己写的VBA
Sub 自动匹对()
    Dim a%, b%, i As String

您先定个匹配规则,否则不好处理啊
比如青霉素,在“西药”表中有个药剂啊,但是注射用青霉素、青霉素片、青霉素胶囊这些却没有,具体要匹配哪一种,您举个例子先

TA的精华主题

TA的得分主题

发表于 2013-7-3 16:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
不知你说的匹配是啥意思
一般来说,模糊匹配可用以下方法
1、like "*" & "青霉素" & "*"
2、用正则表达式:pattern="青霉素"
3、find方法,lookat:=xlpart

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-7-4 11:53 | 显示全部楼层
LIUZHU 发表于 2013-7-3 16:23
您先定个匹配规则,否则不好处理啊
比如青霉素,在“西药”表中有个药剂啊,但是注射用青霉素、青霉素片 ...

呵呵,感谢老师的热心,可能我没能清楚表述问题,我重新解释下:
1、“西药”表中是一个药品标准分类表,是一个医保里面的药品分类标准,其分类不按制剂来分,其是按照药品中的活性成分来分类的;举个例子:“青霉素”不同的生产企业可能有的生产“青霉素原料”、“青霉素胶囊”、“青霉素片”、“青霉素注射剂”等等;但是,医保目录中的“西药”表只列出了“青霉素”以及他的分类
(1抗微生物药物                   
1.1抗生素类药物
1.1.1β内酰胺类药物
1.1.1.1青霉素类药物
1.1.1.1.1窄谱天然青霉素类药物)
2、我现在想通过VBA实现的功能,就是分析将厂家生产的类似“青霉素原料”、“青霉素胶囊”、“青霉素片”、“青霉素注射剂”全部按"西药"表中按照“青霉素”进行归属,到时候,我就可以一目了然的知道这家公司产品主要集中于“抗生素类药物”还是其他什么。
3、我现在需要解决的问题是,我如何能过智能的、模糊的将公司的“青霉素胶囊”、“青霉素片”、“青霉素注射剂”中的识别出关键词“青霉素”,然后在“sheet1”的“青霉素胶囊”、“青霉素片”、“青霉素注射剂”相应表格中自动写入“西药”表中关于对“青霉素”的描述:“(1抗微生物药物                   
1.1抗生素类药物
1.1.1β内酰胺类药物
1.1.1.1青霉素类药物
1.1.1.1.1窄谱天然青霉素类药物)”      接下来,我就可以通过透视表一些工具进行统计分析。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-7-4 12:16 | 显示全部楼层
LIUZHU 发表于 2013-7-3 16:23
您先定个匹配规则,否则不好处理啊
比如青霉素,在“西药”表中有个药剂啊,但是注射用青霉素、青霉素片 ...

举个具体例子吧:
1、以“西药”表中“青霉素”为例,在“西药”表中“青霉素”分类为
1抗微生物药物
1.1抗生素类药物
1.1.1β内酰胺类药物
1.1.1.1青霉素类药物
1.1.1.1.1窄谱天然青霉素类药物
甲类
青霉素
解释下:青霉素属于“抗微生物药物”这个大类,继续细分,青霉素又属于“抗生素类药物”;继续细分“β内酰胺类药物”——“青霉素类药物”直至“窄谱天然青霉素类药物”
2、sheet1中是某家制药公司的产品中涉及青霉素类药品的产品线:
青霉素
注射用青霉素
青霉素片
青霉素胶囊
青霉素V胶囊

产品均是以“青霉素”为核心,只是剂型不同,有“青霉素”、"注射用青霉素"、“青霉素片”等等;我统计的时候无法将其归属一类,所以我现在要根据“西药”表中对"青霉素"的分类对“sheet1”中涉及到青霉素的药品进行自动添加补充资料
3、下表就是我想达到的状态
青霉素1抗微生物药物
1.1抗生素类药物
1.1.1β内酰胺类药物
1.1.1.1青霉素类药物
1.1.1.1.1窄谱天然青霉素类药物
注射用青霉素1抗微生物药物
1.1抗生素类药物
1.1.1β内酰胺类药物
1.1.1.1青霉素类药物
1.1.1.1.1窄谱天然青霉素类药物
青霉素1抗微生物药物
1.1抗生素类药物
1.1.1β内酰胺类药物
1.1.1.1青霉素类药物
1.1.1.1.1窄谱天然青霉素类药物
青霉素胶囊1抗微生物药物
1.1抗生素类药物
1.1.1β内酰胺类药物
1.1.1.1青霉素类药物
1.1.1.1.1窄谱天然青霉素类药物
4、上述例子只是以“青霉素”为例,因为公司药品很多,一个更加实际的效果如下:
注射用青霉素1抗微生物药物
1.1抗生素类药物
1.1.1β内酰胺类药物
1.1.1.1青霉素类药物
1.1.1.1.1窄谱天然青霉素类药物
青霉素1抗微生物药物
1.1抗生素类药物
1.1.1β内酰胺类药物
1.1.1.1青霉素类药物
1.1.1.1.1窄谱天然青霉素类药物
青霉素胶囊1抗微生物药物
1.1抗生素类药物
1.1.1β内酰胺类药物
1.1.1.1青霉素类药物
1.1.1.1.1窄谱天然青霉素类药物
硫氯酚胶囊
2抗寄生虫病药物
2.1抗吸虫病药物
复方阿司匹林
3解热镇痛及非甾体抗炎药物
3.1解热镇痛及非甾体抗炎药物
3.1.1非选择性COX抑制剂
维生素A注射剂
6维生素及矿物质缺乏症用药物
6.1维生素类药物
6.1.1维生素A类药物
阿霉素胶囊
10抗肿瘤药物
10.1细胞毒药物
10.1.1作用于DNA化学结构药物
”西药“中只会显示红色标记的文字,我想能不能通过VBA进行模糊智能匹配


TA的精华主题

TA的得分主题

 楼主| 发表于 2013-7-4 12:28 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
清风幽闲 发表于 2013-7-3 16:32
不知你说的匹配是啥意思
一般来说,模糊匹配可用以下方法
1、like "*" & "青霉素" & "*"

非常感谢老师的帮助,可能意思没表达清楚主要就是想能不能模糊智能匹配

”西药“表是一个药品国家分类,是一个标准表,里面包含了2000多种药品(不分剂型)

”sheet1“是一家公司具体药品,包括了具体的剂型,譬如”西药“中的”青霉素“,公司可能写为”青霉素片“、”青霉素胶囊“等等,我现在就是想自动将”青霉素片“、”青霉素胶囊“识别为”西药”中的“青霉素”并将”西药”中对“青霉素”的分类信息自动填写至”青霉素片“、”青霉素胶囊“单元格后面


上面仅仅以青霉素为例,我希望VBA程序能够对2000多种药品同样适用

再次感谢

点评

用like做模糊匹配,看6楼  发表于 2013-7-4 17:30

TA的精华主题

TA的得分主题

发表于 2013-7-4 17:28 | 显示全部楼层
yzlxyz 发表于 2013-7-4 12:28
非常感谢老师的帮助,可能意思没表达清楚主要就是想能不能模糊智能匹配

”西药“表是一个药品国家分类 ...

今天怎么回事,回帖老是失败,提示错误
QQ截图20130704155032.jpg
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-16 03:46 , Processed in 0.027450 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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