Excel精英培训网

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

关于一个循环提取中间值,并且保存到数组里的算法,求解答

[复制链接]
发表于 2012-5-23 20:11 | 显示全部楼层 |阅读模式
image1.abcde.com/images/upload/compic_m750/tcom_150701_m750_1.jpgimage1.abcde.com/images/upload/compic_m750/tcom_150701_m750_4.jpgimage1.abcde.com/images/upload/compic_m750/tcom_150701_m750_5.jpgimage1.abcde.com/images/upload/compic_m750/tcom_150701_m750_6.jpgimage1.abcde.com/images/upload/compic_m750/tcom_150701_m750_7.jpgimage1.abcde.com/images/upload/compic_m750/tcom_150701_m750_9.jpg
我从系统中抓到的数据就是以上
image1.abcd.com/tcom_150701_m750_1.jpg
拿这个做说明
所有的”image1.abcd.com/tcom_150701_m750_”都是相同的,就是后面那个数字有问题,后面也是”.jpg”
因为数字有可能是两位数,也不按照顺序来
如何可以按照循环的方式把每一条连接的" image1.abcd.com/tcom_150701_m750_"和".jpg"之间的数字抓出来,并且存入数组??求大大指教
因为我没权限加入带url的内容,所以,每个image1前面是有http://的

发表于 2012-5-23 20:24 | 显示全部楼层
传个附件吧,或者上个图片也行啊,你发一堆....还得替你整理一下然后才能去想你的意思,麻烦啊!!
回复

使用道具 举报

 楼主| 发表于 2012-5-23 20:30 | 显示全部楼层
本帖最后由 qukerobot 于 2012-5-23 20:39 编辑

呵呵,是我的问题哈,因为系统里抓出来就是那样的,连成一条线了
image1.abcde.com/images/upload/compic_m750/tcom_150701_m750_1.jpg
image1.abcde.com/images/upload/compic_m750/tcom_150701_m750_4.jpg
image1.abcde.com/images/upload/compic_m750/tcom_150701_m750_5.jpg
image1.abcde.com/images/upload/compic_m750/tcom_150701_m750_6.jpg
image1.abcde.com/images/upload/compic_m750/tcom_150701_m750_7.jpg
image1.abcde.com/images/upload/compic_m750/tcom_150701_m750_9.jpg
拆分开就是如上所示,我是想把1,4,5,6,7,9这6个数抓出来,存放在数组里

我的代码很简单,就是一个简单的把你刚刚看到很复杂的一条线的数据,把不需要的地方都去除了,最后剩下这些图片的连接地址
无奈图片地址不规则,感觉不是很好下手,如果是简单的按照字数多少提取的话,也有可能会遇到下面的情况

image1.abcde.com/images/upload/compic_m750/tcom_150701_m750_1.jpg
image1.abcde.com/images/upload/compic_m750/tcom_150701_m750_4.jpg
image1.abcde.com/images/upload/compic_m750/tcom_150701_m750_15.jpg
image1.abcde.com/images/upload/compic_m750/tcom_150701_m750_16.jpg
image1.abcde.com/images/upload/compic_m750/tcom_150701_m750_7.jpg
image1.abcde.com/images/upload/compic_m750/tcom_150701_m750_9.jpg
这样的话,可能中间 15,16的数据就抓不住!

我想的是有没有那种函数,我给一个原始string,然后给2个参数,然后他把这2个参数的内容先取出,再返回我需要的给我

我最开始想了一个办法,先把第一个.jpg为结尾的数据抓进数组,再按第一个和第二个.jpg结尾的数据抓紧数组,但是不知道该怎么写代码,如果可以的话,数据就被分为6组存放进数组,然后因为image1.abcde.com/images/upload/compic_m750/tcom_150701_m750_和.jpg是相同的
可以先用Substitute先把image1.abcde.com/images/upload/compic_m750/tcom_150701_m750_替换为"",再把.jpg也替换为"",
最后得到的数组就是我想要的,不管那个数字是不是双数,都可以

不知道大大们如何看~~
回复

使用道具 举报

发表于 2012-5-23 20:37 | 显示全部楼层
qukerobot 发表于 2012-5-23 20:30
呵呵,是我的问题哈,因为系统里抓出来就是那样的,连成一条线了
image1.abcde.com/images/upload/compic_m75 ...

只要数字??位数只有一位??可以用 mid,或right 加 left

如果是有多位,可以考虑 使用 split 进行两次拆分

如:
  s="mage1.abcde.com/images/upload/compic_m750/tcom_150701_m750_1.jpg"
  s=split(s,".")(2)   '根据 . 进行拆分,取第2个 点 以后的数据
  s=split(s,"_")(ubound(split(s,"_")))   '根据 _ 进行拆分,取最后一个数据'




回复

使用道具 举报

发表于 2012-5-23 21:36 | 显示全部楼层
Dim s$, arr
s = "image1.abcde.com/images/upload/compic_m750/tcom_150701_m750_1.jpgimage1.abcde.com/images/upload/compic_m750/tcom_150701_m750_4.jpgimage1.abcde.com/images/upload/compic_m750/tcom_150701_m750_5.jpgimage1.abcde.com/images/upload/compic_m750/tcom_150701_m750_6.jpgimage1.abcde.com/images/upload/compic_m750/tcom_150701_m750_7.jpgimage1.abcde.com/images/upload/compic_m750/tcom_150701_m750_9.jpg"
arr = Split(s, "image1.abcde.com/images/upload/compic_m750/tcom_150701_m750_")
回复

使用道具 举报

发表于 2012-5-23 21:40 | 显示全部楼层
要是.jpg也不要,可以这样加一句:
s = Replace(s, ".jpg", "")
arr = Split(s, "image1.abcde.com/images/upload/compic_m750/tcom_150701_m750_")
回复

使用道具 举报

发表于 2012-5-23 21:44 | 显示全部楼层
按你的想法,就是这样哦:
Sub test()
Dim s$, arr
s = "image1.abcde.com/images/upload/compic_m750/tcom_150701_m750_12.jpgimage1.abcde.com/images/upload/compic_m750/tcom_150701_m750_45.jpgimage1.abcde.com/images/upload/compic_m750/tcom_150701_m750_5.jpgimage1.abcde.com/images/upload/compic_m750/tcom_150701_m750_6.jpgimage1.abcde.com/images/upload/compic_m750/tcom_150701_m750_7.jpgimage1.abcde.com/images/upload/compic_m750/tcom_150701_m750_9.jpg"
s = Replace(s, "image1.abcde.com/images/upload/compic_m750/tcom_150701_m750_", "")
arr = Split(s, ".jpg")
End Sub
回复

使用道具 举报

 楼主| 发表于 2012-5-23 22:07 | 显示全部楼层
l00l00 发表于 2012-5-23 21:44
按你的想法,就是这样哦:
Sub test()
Dim s$, arr

你好,我对你的这种解法不是很明白哈
我想可能是我没阐述清楚

比如上面只有6个数据连接,如果是10个呢,我可以通过程序能判断有几条数据链
然后以这个为循环上线,但是不太明白,你这种方式是把需要的数据以循环的方式录入数组吗?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-20 18:10 , Processed in 0.288237 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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