提取字符串,求大神帮写个vba代码或者excel函数

qq_40758443 2018-07-15 12:28:37
sd sds sad sad adsw sda 000154546548
sd sds sfgd sad adsw sda dahhsda ndfd4654815151
sds sfgd sad adsw sda 99151551515
sds sfgd sad adsw 9548481515
sfgd sad adsw 4544512185
sd sds sad sad adsw sda 000154546548
sd sds sfgd sad adsw sda dahhsda ndfd4654815151
sds sfgd sad adsw sda 99151551515
sds sfgd sad adsw 9548481515
sfgd sad adsw 4544512185
sd sds sad sad adsw sda 000154546548
sd sds sfgd sad adsw sda dahhsda ndfd4654815151
sds sfgd sad adsw sda 99151551515
sds sfgd sad adsw 9548481515
sfgd sad adsw 4544512185
sd sds sad sad adsw sda 000154546548
sd sds sfgd sad adsw sda dahhsda ndfd4654815151
sds sfgd sad adsw sda 99151551515
sds sfgd sad adsw 9548481515
sfgd sad adsw 4544512185
sd sds sad sad adsw sda 000154546548
sd sds sfgd sad adsw sda dahhsda ndfd4654815151
sds sfgd sad adsw sda 99151551515
sds sfgd sad adsw 9548481515
sfgd sad adsw 4544512185
sd sds sad sad adsw sda 000154546548
sd sds sfgd sad adsw sda dahhsda ndfd4654815151
sds sfgd sad adsw sda 99151551515
sds sfgd sad adsw 9548481515
sfgd sad adsw 4544512185
sd sds sad sad adsw sda 000154546548
sd sds sfgd sad adsw sda dahhsda ndfd4654815151
sds sfgd sad adsw sda 99151551515
sds sfgd sad adsw 9548481515
sfgd sad adsw 4544512185
sd sds sad sad adsw sda 000154546548
sd sds sfgd sad adsw sda dahhsda ndfd4654815151
sds sfgd sad adsw sda 99151551515
sds sfgd sad adsw 9548481515
sfgd sad adsw 4544512185
sd sds sad sad adsw sda 000154546548
sd sds sfgd sad adsw sda dahhsda ndfd4654815151
sds sfgd sad adsw sda 99151551515
sds sfgd sad adsw 9548481515
sfgd sad adsw 4544512185
sd sds sad sad adsw sda 000154546548

大家好,以上是一行行的数据,需要提取每行最后的数据,例如sd sds sfgd sad adsw sda dahhsda ndfd4654815151,需要提取出来的

是:ndfd4654815151 ,有每行字符串里面,有包含7个空格的,6个空格的,5个空格的,4个空格的,3个空格的,所以请大神们,写个代

码或者excel函数,提取出字符串。谢谢,
...全文
685 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
artilleryfucker 2018-08-29
  • 打赏
  • 举报
回复
用正则表达式试试?
kyss_301 2018-08-29
  • 打赏
  • 举报
回复
引用 8 楼 qq_35328269 的回复:
引用 6 楼 of123的回复:
[quote=引用 5 楼 qq_35328269 的回复:]
4楼瞎说,你的代码是最繁琐的,使用split函数才是王道,简单明了,直接把每行字符串 用空格 分隔 最数组最下表标的那组数据,最简单。
你知道函数底层是怎样实现的吗?所以,你真的是“瞎”说。

如你所说,我确实不确定slipt函数是如何实现的,我也没有特意去深入研究。

但是,

第一,我十分清晰的知道如何去构造这样一个函数,最科学的办法便是将数据载入内存,用指针寻找空格和换行符,找到满足条件的内存数据后返回指针。我相信微软编写VB函数库的工程师的C语言或汇编功力一定不会不如我,所以实现此功能的效率一定不会比这样种方法更低。

第二,很明显,提问者的编程能力是很菜的,你兜着圈子给他一堆文本读写的代码,又是循环,又是字符串查找函数,又是末尾读取,又是字符串截取函数,绕过来绕过来去的,可能他连EOF是何意他都不明白,你觉得你的方法科学吗?况且你的方法已经绕赤道跑了几圈后转回来的,完全是属于脱了裤子放屁。

第三,instr或instrrec,mid,split这些函数,在实现方式上都应该是使用内存指针。而你的办法使用多次的操作指针和读写硬盘缓冲区,并且这些操作在一个当型循环体内。经过我这样的分析,你觉得你的方法效率可以高到哪里去?

第四,无论是效率还是代码的易读性,采用split函数都是最佳解决方案。至于某些人说的split效率低,我想你们都应该看看自己写的代码到底有没有可以改进的地方,比如减少循环次数,或者接收split的数组的数据类型是否定义的合理。

第五,我居然认真了,在一个所谓的精通"函数底层"的高手面前讨论了一堆的指针,内存,缓冲区,真的是大言不惭了,鄙人惭愧啊。[/quote]


你写一个看看,空说无凭。。。。。
of123 2018-08-24
  • 打赏
  • 举报
回复
一个“蠢”字了得。
李雪鹏 2018-08-23
  • 打赏
  • 举报
回复
引用 6 楼 of123的回复:
引用 5 楼 qq_35328269 的回复:
4楼瞎说,你的代码是最繁琐的,使用split函数才是王道,简单明了,直接把每行字符串 用空格 分隔 最数组最下表标的那组数据,最简单。
你知道函数底层是怎样实现的吗?所以,你真的是“瞎”说。
如你所说,我确实不确定slipt函数是如何实现的,我也没有特意去深入研究。 但是, 第一,我十分清晰的知道如何去构造这样一个函数,最科学的办法便是将数据载入内存,用指针寻找空格和换行符,找到满足条件的内存数据后返回指针。我相信微软编写VB函数库的工程师的C语言或汇编功力一定不会不如我,所以实现此功能的效率一定不会比这样种方法更低。 第二,很明显,提问者的编程能力是很菜的,你兜着圈子给他一堆文本读写的代码,又是循环,又是字符串查找函数,又是末尾读取,又是字符串截取函数,绕过来绕过来去的,可能他连EOF是何意他都不明白,你觉得你的方法科学吗?况且你的方法已经绕赤道跑了几圈后转回来的,完全是属于脱了裤子放屁。 第三,instr或instrrec,mid,split这些函数,在实现方式上都应该是使用内存指针。而你的办法使用多次的操作指针和读写硬盘缓冲区,并且这些操作在一个当型循环体内。经过我这样的分析,你觉得你的方法效率可以高到哪里去? 第四,无论是效率还是代码的易读性,采用split函数都是最佳解决方案。至于某些人说的split效率低,我想你们都应该看看自己写的代码到底有没有可以改进的地方,比如减少循环次数,或者接收split的数组的数据类型是否定义的合理。 第五,我居然认真了,在一个所谓的精通"函数底层"的高手面前讨论了一堆的指针,内存,缓冲区,真的是大言不惭了,鄙人惭愧啊。
of123 2018-08-20
  • 打赏
  • 举报
回复
引用 5 楼 qq_35328269 的回复:
4楼瞎说,你的代码是最繁琐的,使用split函数才是王道,简单明了,直接把每行字符串 用空格 分隔 最数组最下表标的那组数据,最简单。
你知道函数底层是怎样实现的吗?所以,你真的是“瞎”说。
李雪鹏 2018-08-20
  • 打赏
  • 举报
回复
4楼瞎说,你的代码是最繁琐的,使用split函数才是王道,简单明了,直接把每行字符串 用空格 分隔 最数组最下表标的那组数据,最简单。
脆皮大雪糕 2018-08-20
  • 打赏
  • 举报
回复
split只是代码量少了,耗费的资源其实更多了。
of123 2018-07-18
  • 打赏
  • 举报
回复
其实核心内容就是 InStrRev 函数。其他都是浮云,换几朵也无妨。
脆皮大雪糕 2018-07-17
  • 打赏
  • 举报
回复
目测他的数据在excel里而不是文本文件里。
of123 2018-07-17
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
Dim strline As String

Open "c:\test\test.txt" For Input As #1
Open "c:\test\new\test.txt" For Output As #2
Do Until EOF(1)
Line Input #1, strline
strline = Mid(strline, InStrRev(strline, " ") + 1)
Print #2, strline
Loop
Close #2
Close #1
End Sub

000154546548
ndfd4654815151
99151551515
9548481515
4544512185
000154546548
ndfd4654815151
99151551515
9548481515
4544512185
000154546548
ndfd4654815151
99151551515
9548481515
4544512185
000154546548
ndfd4654815151
99151551515
9548481515
4544512185
000154546548
ndfd4654815151
99151551515
9548481515
4544512185
000154546548
ndfd4654815151
99151551515
9548481515
4544512185
000154546548
ndfd4654815151
99151551515
9548481515
4544512185
000154546548
ndfd4654815151
99151551515
9548481515
4544512185
000154546548
ndfd4654815151
99151551515
9548481515
4544512185
000154546548
舉杯邀明月 2018-07-15
  • 打赏
  • 举报
回复
给你一段代码参考。VBA中也可以用的,语法完全相同。

Private Sub Command1_Click()
Dim arrBuff() As String
Dim strText As String

strText = "sd sds sfgd sad adsw sda dahhsda ndfd4654815151"
arrBuff = Split(strText, " ")
' 关健点:Split( )函数的使用
' 大量文本,自己用循环进行处理
' 如果源字符串“最后面”有可能带空格,那么就去掉尾部空格:
' arrBuff = Split(RTrim$(strText), " ")
MsgBox "最后一段:" & arrBuff(UBound(arrBuff())), 64
End Sub

2,462

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧