Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2799|回复: 5

[已解决]求代码

[复制链接]
匿名  发表于 2014-10-11 19:42 |阅读模式

OLJK98HJKN9
98
9
OLJK
HJKN

87JJN80ED8
87
80
8
JJN
ED
87JJN80ED8
87
80
8
JJN
ED
2A55DDD6F
2
55
6
A
DDD

请问怎么用正则表达式把第一列的字符串里面的数字和字母按顺序截取出来,再分别放到后面的行中?
求代码
谢谢
最佳答案
2014-10-12 00:07
正则提取数字和字母
  1. Sub ExtractData()
  2.     Dim arr, arrO, i, j, k, l
  3.     arr = Range("A1").CurrentRegion
  4.     ReDim arrO(1 To UBound(arr), 1 To 20)
  5.     Dim objRegExp As Object, obj As Object
  6.     Set objRegExp = CreateObject("VBScript.regExp")
  7.     For i = 1 To UBound(arr)
  8.         With objRegExp
  9.             k = 0
  10.             .Global = True
  11.             .Pattern = "\d+"
  12.             If .test(arr(i, 1)) Then
  13.                 Set obj = .Execute(arr(i, 1))
  14.                 k = obj.Count
  15.                 For j = 0 To obj.Count - 1
  16.                   arrO(i, j + 1) = obj(j)
  17.                 Next j
  18.             End If
  19.             .Pattern = "\D+"
  20.             If .test(arr(i, 1)) Then
  21.                 Set obj = .Execute(arr(i, 1))
  22.                 For j = 0 To obj.Count - 1
  23.                   arrO(i, k + j + 1) = obj(j)
  24.                 Next j
  25.             End If
  26.         End With
  27.     Next i
  28.     Set objRegExp = Nothing
  29.     Range("B1").Resize(UBound(arrO), UBound(arrO, 2)) = arrO
  30. End Sub
复制代码
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-10-12 00:07 | 显示全部楼层    本楼为最佳答案   
正则提取数字和字母
  1. Sub ExtractData()
  2.     Dim arr, arrO, i, j, k, l
  3.     arr = Range("A1").CurrentRegion
  4.     ReDim arrO(1 To UBound(arr), 1 To 20)
  5.     Dim objRegExp As Object, obj As Object
  6.     Set objRegExp = CreateObject("VBScript.regExp")
  7.     For i = 1 To UBound(arr)
  8.         With objRegExp
  9.             k = 0
  10.             .Global = True
  11.             .Pattern = "\d+"
  12.             If .test(arr(i, 1)) Then
  13.                 Set obj = .Execute(arr(i, 1))
  14.                 k = obj.Count
  15.                 For j = 0 To obj.Count - 1
  16.                   arrO(i, j + 1) = obj(j)
  17.                 Next j
  18.             End If
  19.             .Pattern = "\D+"
  20.             If .test(arr(i, 1)) Then
  21.                 Set obj = .Execute(arr(i, 1))
  22.                 For j = 0 To obj.Count - 1
  23.                   arrO(i, k + j + 1) = obj(j)
  24.                 Next j
  25.             End If
  26.         End With
  27.     Next i
  28.     Set objRegExp = Nothing
  29.     Range("B1").Resize(UBound(arrO), UBound(arrO, 2)) = arrO
  30. End Sub
复制代码
回复

使用道具 举报

发表于 2014-10-12 09:27 | 显示全部楼层
suye1010 发表于 2014-10-12 00:07
正则提取数字和字母

版主,你看咱是灌水的主?
回复

使用道具 举报

发表于 2014-10-12 14:07 | 显示全部楼层
su45 发表于 2014-10-12 09:27
版主,你看咱是灌水的主?

凡是与帖子主题无关的回复一律视为灌水
回复

使用道具 举报

发表于 2014-10-12 16:57 | 显示全部楼层
suye1010 发表于 2014-10-12 14:07
凡是与帖子主题无关的回复一律视为灌水

以后别乱删帖子,咱说了咱不会正则,留句话便于关注、学习,你删了,咱上哪去找呀!
回复

使用道具 举报

匿名  发表于 2014-10-13 02:33

版主好像是有点太严格了

谢谢suye1010的解答
回复

使用道具

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-15 21:57 , Processed in 0.272758 second(s), 5 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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