ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 请老师帮忙改善和提升数据对比的代码

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-11-17 11:52 | 显示全部楼层 |阅读模式
本帖最后由 divineson 于 2024-11-17 11:59 编辑

自己胡编乱改,做出了一个数据对比的代码,主要作用就是A列与B列的数据的横向对比,即A2与B2、A3与B3,以此类推,A、B两个单元格内有不同的进行相向标红字,但效果不太好,特别是文字比较长的或开头文字相同但后面不同的都没有标注出来,还有一个缺陷就是对比过一次后,原来有数据的进行了增加,也不会再进行对比了,请老师帮忙看看如何改善和提升效果,谢谢!

数据对比.zip

19.97 KB, 下载次数: 10

TA的精华主题

TA的得分主题

发表于 2024-11-17 13:41 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 shiruiqiang 于 2024-11-17 14:13 编辑

个人建议:一开始,需代码把a列的字体颜色修改为黑色,否则后台再比较,体现不出来
第二,你的正则式只是提取了汉字部分,应该是一段。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-17 14:17 来自手机 | 显示全部楼层
shiruiqiang 发表于 2024-11-17 13:41
个人建议:一开始,需代码把a列的字体颜色修改为黑色,否则后台再比较,体现不出来
第二,你的正则式只是 ...

老师你好,能麻烦你帮忙把代码完善吗?之前自己摸索了很久也做不出想要的结果,因工作关系现在急需使用,谢谢老师!

TA的精华主题

TA的得分主题

发表于 2024-11-17 14:41 | 显示全部楼层
模块2,红色的为相同,黑色的为不同
你要改红色的不同,代码先修改为一开始为红色,相同的变成黑色

image.jpg



数据对比.rar

22.13 KB, 下载次数: 6

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-11-17 15:59 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-17 16:13 | 显示全部楼层
shiruiqiang 发表于 2024-11-17 14:41
模块2,红色的为相同,黑色的为不同
你要改红色的不同,代码先修改为一开始为红色,相同的变成黑色

感谢老师的帮忙,请教一下能改为通用的吗?即放在哪个子表加载都能使用,目前只能在“sheet1"中使用;另外,我是想做成双向的对比的效果,如下图,这样比较直观,能一眼看出不同的地方向,麻烦老师再帮忙改改,万分感激!
1微信图片_20241117161001.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-17 16:21 | 显示全部楼层
shiruiqiang 发表于 2024-11-17 15:59
如果正则式,应该是这样写“[^\、]+”

按照老师提供的代码改了,但我这里显示不成功

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-17 16:32 | 显示全部楼层
shiruiqiang 发表于 2024-11-17 15:59
如果正则式,应该是这样写“[^\、]+”

不好意思,是我没用对符号,老师的改法是正确的,已经成功。还想请教一下,如何改为每次运行先清除原来的结果,将字体重新都改为黑色后再次进行对比。正则使用后,发现如果我手动在A列或B列再手工输入一些数据再做检测好像结果就不会变了。

TA的精华主题

TA的得分主题

发表于 2024-11-17 16:33 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-11-17 16:43 | 显示全部楼层
  1. Sub 对比3()
  2. Dim ss As Range
  3. Dim ss1 As Range
  4. Set reg = CreateObject("vbscript.regexp")
  5. Set reg1 = CreateObject("vbscript.regexp")
  6. pat = "[^、]+"
  7. With reg
  8.   .Global = True
  9.   .Pattern = pat ' "[一-龢]+"
  10.   For Each ss In Range("b2", Cells(Rows.Count, 2).End(xlUp))
  11.    Set sj = .Execute(ss)
  12.    For Each xm In sj
  13.     If Not "、" & ss.Offset(0, -1) & "、" Like "*、" & xm & "、*" Then
  14.      qd = xm.firstindex + 1
  15.      cd = xm.Length
  16.      ss.Characters(qd, cd).Font.Color = 255
  17.     End If
  18.    Next xm
  19.   Next ss
  20. End With
  21. With reg1
  22.   .Global = True
  23.   .Pattern = pat ' "[一-龢]+"
  24.   For Each ss1 In Range("a2", Cells(Rows.Count, 1).End(xlUp))
  25.    Set sj1 = .Execute(ss1)
  26.    For Each xm1 In sj1
  27.     If Not "、" & ss1.Offset(0, 1) & "、" Like "*、" & xm1 & "、*" Then
  28.      qd1 = xm1.firstindex + 1
  29.      cd1 = xm1.Length
  30.      ss1.Characters(qd1, cd1).Font.Color = 255
  31.     End If
  32.    Next xm1
  33.   Next ss1
  34. End With
  35. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-21 18:49 , Processed in 0.049624 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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