Excel精英培训网

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

[已解决]求帮忙提取数据

[复制链接]
发表于 2017-7-3 11:04 | 显示全部楼层 |阅读模式
请大神帮忙指导用VBA 提取需要的数据,将A列中的数据提取到G/H 列,我在附件中聚了例子,请帮忙看下~谢谢~~~
最佳答案
2017-7-3 16:02
  1. Sub tt()
  2.     arr = Range("a1:a" & [a65536].End(3).Row)
  3.     ReDim brr(1 To UBound(arr), 1 To 2)
  4.     With CreateObject("vbscript.regexp")
  5.         .Global = True
  6.         .Pattern = "(\w+_\d+)(?=').+?(J\d+\.?\d+)"
  7.         For i = 1 To UBound(arr) Step 7
  8.             s = arr(i, 1) & arr(i + 1, 1) & arr(i + 2, 1) & arr(i + 3, 1) & arr(i + 4, 1)
  9.             n = n + 1
  10.             brr(n, 1) = .Execute(s)(0).submatches(0)
  11.             brr(n, 2) = .Execute(s)(0).submatches(1)
  12.         Next
  13.      End With
  14.      [g8].Resize(n, 2) = brr
  15. End Sub
复制代码

test.rar

7.77 KB, 下载次数: 10

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-7-3 11:09 | 显示全部楼层
用正则表达式比较方便........................
回复

使用道具 举报

 楼主| 发表于 2017-7-3 11:10 | 显示全部楼层
小花鹿 发表于 2017-7-3 11:09
用正则表达式比较方便........................

怎么玩呢?求指点,只要能解决都OK~~
回复

使用道具 举报

发表于 2017-7-3 12:06 | 显示全部楼层
本帖最后由 QCW911 于 2017-7-3 12:09 编辑

<  ([\s\S]+?)' >[\s\S]+?(J\d+.\d+)

  匹配组1(行1:列4,长度:10): temst_9009
  匹配组2(行5:列1,长度:7): J127.68
----------------------------------------------------------------------
  匹配组1(行7:列4,长度:10): temst_3109
  匹配组2(行11:列1,长度:7): J127.58
----------------------------------------------------------------------
  匹配组1(行13:列4,长度:10): demst_9019
  匹配组2(行17:列1,长度:7): J127.48
----------------------------------------------------------------------
  匹配组1(行19:列4,长度:9): temst_109
  匹配组2(行23:列1,长度:7): J127.78
----------------------------------------------------------------------
  匹配组1(行26:列4,长度:10): temst_9019
  匹配组2(行30:列1,长度:7): J127.61
回复

使用道具 举报

 楼主| 发表于 2017-7-3 13:40 | 显示全部楼层
QCW911 发表于 2017-7-3 12:06
<  ([\s\S]+?)' >[\s\S]+?(J\d+.\d+)

  匹配组1(行1:列4,长度:10): temst_9009

抱歉,我没看懂,这个怎么玩的呢?能给个文本看看嘛

回复

使用道具 举报

 楼主| 发表于 2017-7-3 14:13 | 显示全部楼层
自己顶一顶,有没有来帮忙的呀
回复

使用道具 举报

发表于 2017-7-3 14:22 | 显示全部楼层
正则,里面不是出来了吗?
答案都告诉你了 +q57726980
回复

使用道具 举报

 楼主| 发表于 2017-7-3 14:32 | 显示全部楼层
QCW911 发表于 2017-7-3 14:22
正则,里面不是出来了吗?
答案都告诉你了 +q57726980

我加你Q了,能发个处理好的excel 给我吗?
回复

使用道具 举报

发表于 2017-7-3 16:02 | 显示全部楼层    本楼为最佳答案   
  1. Sub tt()
  2.     arr = Range("a1:a" & [a65536].End(3).Row)
  3.     ReDim brr(1 To UBound(arr), 1 To 2)
  4.     With CreateObject("vbscript.regexp")
  5.         .Global = True
  6.         .Pattern = "(\w+_\d+)(?=').+?(J\d+\.?\d+)"
  7.         For i = 1 To UBound(arr) Step 7
  8.             s = arr(i, 1) & arr(i + 1, 1) & arr(i + 2, 1) & arr(i + 3, 1) & arr(i + 4, 1)
  9.             n = n + 1
  10.             brr(n, 1) = .Execute(s)(0).submatches(0)
  11.             brr(n, 2) = .Execute(s)(0).submatches(1)
  12.         Next
  13.      End With
  14.      [g8].Resize(n, 2) = brr
  15. End Sub
复制代码

test.rar

15.87 KB, 下载次数: 9

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 06:02 , Processed in 0.349667 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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