ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 根据2表的姓名匹配单位

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-12 16:05 | 显示全部楼层
liuxi001 发表于 2019-6-12 12:10
If InStr(aa, "负责") + InStr(aa, "地址") + InStr(aa, "电话") +InStr(aa, "合伙人")+ InStr(aa, "负责") ...

谢谢老师的耐心指导

TA的精华主题

TA的得分主题

发表于 2019-6-12 17:19 | 显示全部楼层
liuxi001 发表于 2019-6-12 01:29
其实这里的两个replace替换可以写在re里,因为昨天测试时一直没有匹配到(11人),我以为是括号的问题!! ...

请教老师,如果要在表1的姓名中标出与表2姓名一致的单元格,如红色底,该如何修改代码,谢谢!

TA的精华主题

TA的得分主题

发表于 2019-6-12 21:14 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
AFree123 发表于 2019-6-12 17:19
请教老师,如果要在表1的姓名中标出与表2姓名一致的单元格,如红色底,该如何修改代码,谢谢!

老师不敢当,这个就简单多了,基本的字典用法就OK了。
将表2的姓名放入字典,再在表一中单元格循环就OK了

TA的精华主题

TA的得分主题

发表于 2023-8-23 13:53 | 显示全部楼层
多年后看到这个题,尽管是修改过的代码还是有些冗余的地方。
这样好看多了。。。
  1. Sub a()
  2.     '转换
  3.     ar = Sheet1.[a1].CurrentRegion.Value
  4.     Set d = CreateObject("scripting.dictionary")
  5.     Set re = CreateObject("vbscript.regexp")
  6.     re.Pattern = "[\((]\d+人?[\))]"
  7.     For i = 65 To 72
  8.         d(d.Count + 1) = Chr(i)
  9.     Next
  10.     For i = 1 To UBound(ar)
  11.         s = ar(i, 1)
  12.         If re.Execute(s).Count > 0 Then
  13.             gs = re.Replace(Mid(s, InStr(s, ".") + 1), "")
  14.             Do
  15.                 i = i + 1
  16.                 If i > UBound(ar) Then Exit For
  17.                 ss = ar(i, 1)
  18.                 If re.Execute(ss).Count = 0 Then
  19.                     For n = 1 To UBound(ar, 2)
  20.                         sss = Trim(ar(i, n))
  21.                         If Len(sss) Then
  22.                             If Not d.exists(sss) Then
  23.                                 d(sss) = Array(d(n) & i, gs)
  24.                             Else
  25.                                 d(sss) = Array(d(sss)(0) & "、" & d(n) & i, d(sss)(1) & "、" & gs)
  26.                             End If
  27.                         End If
  28.                     Next
  29.                 Else
  30.                     i = i - 1
  31.                     Exit Do
  32.                 End If
  33.             Loop
  34.         End If
  35.     Next
  36.     '匹配
  37.     Sheet2.[a1].CurrentRegion.Offset(2, 10).Resize(, 2).ClearContents
  38.     br = Sheet2.[a1].CurrentRegion
  39.     For i = 3 To UBound(br)
  40.         s = Trim(br(i, 4))
  41.         If d.exists(s) Then
  42.             br(i, 11) = "表1中" & d(s)(0)
  43.             br(i, 12) = d(s)(1)
  44.         Else
  45.             br(i, 11) = "未查到"
  46.         End If
  47.     Next
  48.     Sheet2.[a1].CurrentRegion = br
  49. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-8-27 16:57 | 显示全部楼层
liuxi001 发表于 2023-8-23 13:53
多年后看到这个题,尽管是修改过的代码还是有些冗余的地方。
这样好看多了。。。

几年过去了,还在锲而不舍的研究,为这种精益求精的精神点赞

TA的精华主题

TA的得分主题

发表于 2023-8-27 17:04 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 APPLE123 于 2023-8-27 17:05 编辑
liuxi001 发表于 2023-8-23 13:53
多年后看到这个题,尽管是修改过的代码还是有些冗余的地方。
这样好看多了。。。

刚好工作中遇到的实例与原贴比较贴近。与原贴相比较,就是核对的关键字是2列,姓名+证号。原贴的关键字只有姓名1列
为此改造请教。麻烦老师帮忙看看,该如何修改您的代码,谢谢!


根据2表的姓名证号匹配单位.rar

21.3 KB, 下载次数: 19

TA的精华主题

TA的得分主题

发表于 2023-8-27 22:07 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2023-9-4 10:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
APPLE123 发表于 2023-8-27 17:04
刚好工作中遇到的实例与原贴比较贴近。与原贴相比较,就是核对的关键字是2列,姓名+证号。原贴的关键字只 ...

你的表1没有数据

TA的精华主题

TA的得分主题

发表于 2023-9-4 13:20 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
liuxi001 发表于 2023-9-4 10:38
你的表1没有数据

老师好!谢谢您的回复。
表1有数据啊,您现在看到的单元格起始位置在G1,麻烦老师将表格向左拉到A列即可看到了。辛苦老师了,谢谢!

TA的精华主题

TA的得分主题

发表于 2023-9-4 13:44 | 显示全部楼层
liuxi001 发表于 2023-9-4 10:38
你的表1没有数据

老师您好!数据在A1:F121区域,麻烦老师再看看,谢谢!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-19 20:20 , Processed in 0.043870 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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