ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 提取两个字符串中最大相同部分的字符串。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-6-17 20:45 | 显示全部楼层 |阅读模式
本帖最后由 dyho2010 于 2015-6-17 21:28 编辑

比较两个字符串,并把这两个字符串中最大相同部分提取出来,不区分大小写。如下所示字符串1 字符串2  为原始数据
相同部分、最大相同字符串字母数 为待求结果。
为了方便各位大侠看,我把相同部分标红了。
字符串1字符串2相同部分最大相同字符串字母数备注
Zhou, LGmmlgzhouzhou
4
1.字符转中包括大小写字母、逗号、句号、下划线和空格。匹配不区分大小写。
   
    2.如果能实现提取“相同部分”最好,且相同字符串的字母个数大于3才提取出来,因为2个以下有重复,不好实现,提取出来也没有意义。
   
    3.如果上述功能实现困难,能够统计最大相同字符串的数目也行。
Zhou, LGGGAZlgggalggga
5
Flavel, BSbenjamin.flavelflavel
6
Anafcheh, Mm.anafchehanafcheh
8
Fouladi, AAa.ahmadifouladifouladi
7
Zoubkoff, Rsylvain
0
Yaghobi, Mm.yaghoubiyaghoubi
7
Bezerra, CGcbezerddbezer
5
Partovi-Azar, Pp.partovipartovi
7
zaabdaabaab
3
zabzdavabab
2
zabbada
1
baabb
1



原始数据.rar

4.39 KB, 下载次数: 81

原始数据表

TA的精华主题

TA的得分主题

发表于 2015-6-17 21:05 | 显示全部楼层
有点难,帮顶一下.

TA的精华主题

TA的得分主题

发表于 2015-6-17 21:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
实现不难,主要是要效率高比较难。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-6-17 21:13 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-6-17 21:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 yjh_27 于 2015-6-17 21:20 编辑

自定义函数

原始数据.rar

36.58 KB, 下载次数: 337

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-6-17 21:27 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

膜拜大神,你的回答完美解决我提出的问题。万分感谢。

TA的精华主题

TA的得分主题

发表于 2015-6-17 21:30 | 显示全部楼层
Option Compare Text

Public Function TQZD(RG1 As String, RG2 As String)
    Dim M%, N%, A%, B%, C%, X%, ARR()
    X = VBA.Len(RG1)
    ReDim ARR(1 To X)
    For M = 1 To UBound(ARR)
        For N = 1 To Len(RG2)
            A = 0
            Do While Mid(RG1, M + A, 1) = Mid(RG2, N + A, 1) And Mid(RG1, M + A, 1) <> "" And Mid(RG2, N + A, 1) <> ""
                '            MsgBox Mid(RG1, M + A, 1) & " :" & Mid(RG2, N + A, 1)
                A = A + 1
            Loop
            If A > B Then
                B = A
                C = N
            End If
        Next N
    Next M
    If B = 0 Or C = 0 Then
        TQZD = ""
    Else
        TQZD = Mid(RG2, C, B)
    End If
End Function

TA的精华主题

TA的得分主题

发表于 2015-6-17 21:30 | 显示全部楼层
  1. Function xt(rng1, rng2)
  2. zf = LCase(rng1): zf2 = LCase(rng2)
  3. p = ""
  4. For i = Len(zf) To 1 Step -1
  5.     For j = 1 To Len(zf) - i + 1
  6.         z = Mid(zf, j, i)
  7.         If InStr(zf2, z) Then p = z: GoTo 100
  8.     Next
  9. Next
  10. 100:
  11. xt = p
  12. End Function
复制代码

原始数据.zip

10.12 KB, 下载次数: 146

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2015-6-17 21:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Option Compare Text

  2. Public Function TQZD(RG1 As String, RG2 As String)
  3.     Dim M%, N%, A%, B%, C%
  4.     For M = 1 To Len(RG1)
  5.         For N = 1 To Len(RG2)
  6.             A = 0
  7.             Do While Mid(RG1, M + A, 1) = Mid(RG2, N + A, 1) And Mid(RG1, M + A, 1) <> "" And Mid(RG2, N + A, 1) <> ""
  8.                 A = A + 1
  9.             Loop
  10.             If A > B Then B = A: C = N
  11.         Next N
  12.     Next M
  13.     If B = 0 Or C = 0 Then TQZD = "" Else TQZD = Mid(RG2, C, B)
  14. End Function
复制代码

TA的精华主题

TA的得分主题

发表于 2015-6-17 21:40 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-15 10:48 , Processed in 0.049847 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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