Excel精英培训网

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

怎样将正则表达式匹配成功的数据提取出来并存放于另一列

[复制链接]
发表于 2019-10-6 11:29 | 显示全部楼层 |阅读模式
要求将30,1200,120,98提取出来存放于第2列
某某公司
价格信息
收纳黑板 批发30零售43
望远镜批发1200,零售1400
扫地机器人批发120零售1500
刮胡刀批发98零售150




以下代码是将匹配成功的替换,那么将数据提取出来存放于另一列怎么写呢?
Private Sub CommandButton2_Click()
m = Sheet1.Cells(50, 1).End(xlUp).Row
Set regx = CreateObject("vbscript.regexp")
With regx
    .Global = True
    .Pattern = "批发(\d+)"
    For Each Rng In Sheet1.Range("A1:A" & m) 正则表达式提取问题.zip (16.98 KB, 下载次数: 8)
发表于 2019-10-6 12:30 | 显示全部楼层
QQ截图20191006122227.jpg


看不懂,建议手动给出结果,以便理解
回复

使用道具 举报

发表于 2019-10-8 10:45 | 显示全部楼层
  1. Sub eksky()
  2.    Dim ReGe As Object
  3.    Dim Arr As Variant, MaR As Long, Brr As Variant
  4.       Set ReGe = CreateObject("vbscript.regexp")
  5.       Arr = Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row).Value
  6.       ReDim Brr(1 To UBound(Arr), 1 To 1)
  7.       With ReGe
  8.          .Global = True
  9.          .Pattern = "批发(\d+)"
  10.          For MaR = 1 To UBound(Arr)
  11.              If .test(Arr(MaR, 1)) Then
  12.                Brr(MaR, 1) = .Execute(Arr(MaR, 1))(0).SubMatches(0)
  13.              End If
  14.          Next MaR
  15.      End With
  16. Range("B1").Resize(UBound(Brr)) = Brr
  17. End Sub
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 17:48 , Processed in 0.330745 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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