作者olycats (可)
看板Visual_Basic
标题Re: [算表] vba内字串选取的回圈问题
时间Fri May 6 00:07:04 2011
※ 引述《ryanben ()》之铭言:
: ※ [本文转录自 Office 看板 #1DmfC4RE ]
: 作者: ryanben () 看板: Office
: 标题: [算表] vba内字串选取的回圈问题
: 时间: Thu May 5 20:07:29 2011
: 软体:excel
: 版本:2003 2010
: 不好意思有来洗版了@@
: 请问一下各位版友
: 小弟现在有一个难题
: 我大概知道要怎样写,但是回圈写不出来
: 想请教一下版上的高手版友
: 假设 我有一列的内容是
: A
: 465654
: 125/6565/5643/4235
: 646/56/768568567/7567/575
: 35235
: 86765/756865/868657/576586
: 像以上这样
: 每个字串的长度不一定,"/"的数量也不一定
: 而我想要以"/"为依据 将每个数值拆开并依序往下写
: 465654
: 125
: 6565
: 5643
: 4235
: 646
: 56
: 768568567
: 以此类推....
: 我有想到可以用do until,if
: 再搭配instr mid len等VBA指令可以写出来
: 但是回圈的观念太差
: 真的写不出来
: 请问有版友会写的可以教教我吗?
: 谢谢!!!!
VBA还有很多东西不懂
仅用我会的东西写
所以不是很漂亮 还请见谅
试了几个 结果应该是对的
但也可能有一些特例会造成错误
参考看看吧~
Sub macro1()
Dim x As String
x = Cells(1, 1)
y = Len(x)
k = 2 'k代表所在列数
'清除A栏的储存格内容
Range("A2:A1048576").ClearContents
'第一个
For m = 1 To y
If Mid(x, m, 1) = "/" Then
Cells(k, 1) = Left(x, m - 1)
k = k + 1
Exit For
Else
End If
Next
'如果字串中没有"/"存在 接下来也就不用做了
If Cells(2, 1) = "" Then
Cells(2, 1) = x
x = ""
End If
'中间的
l = 1
For m = 1 To y
If Mid(x, m, 1) = "/" Then
i = m
For n = m + 1 To y
If Mid(x, n, 1) = "/" Then
j = n
Cells(k, 1) = Mid(x, m + 1, n - m - 1)
k = k + 1
l = m + 1
Exit For
End If
Next
End If
Next
'最後一个
If x <> "" Then
For m = 1 To y
n = y - m
If Mid(x, n, 1) = "/" Then
Cells(k, 1) = Right(x, m)
Exit For
End If
Next
End If
Range("A1").Activate
End Sub
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.165.176.224
1F:推 sueadolph:原po问的问题不少,但不知道他有没有真的去了解过= = 05/06 01:15
2F:→ sueadolph:所以我回好心的olycats , 使用split会比较方便 05/06 01:16
3F:→ sueadolph:str=Split("Taiwan","T") >>str(0)="T",str(1)="aiwan" 05/06 01:18
4F:→ sueadolph:aa = "1,2,3,4" 05/06 01:37
5F:→ sueadolph:s = Split(aa, ",") 05/06 01:37
6F:推 sueadolph:s(0)=1 s(1)=2....... 05/06 01:39
8F:→ sueadolph:应该对你有帮助 05/06 01:41
9F:推 hulapig:你可以用 InStr 函数找你要的字串,会比一个个比对快多了 05/06 06:08