Re: [算表] vba內字串選取的迴圈問題
※ 引述《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
推
05/06 01:15, , 1F
05/06 01:15, 1F
→
05/06 01:16, , 2F
05/06 01:16, 2F
→
05/06 01:18, , 3F
05/06 01:18, 3F
→
05/06 01:37, , 4F
05/06 01:37, 4F
→
05/06 01:37, , 5F
05/06 01:37, 5F
推
05/06 01:39, , 6F
05/06 01:39, 6F
→
05/06 01:40, , 7F
05/06 01:40, 7F
→
05/06 01:41, , 8F
05/06 01:41, 8F
推
05/06 06:08, , 9F
05/06 06:08, 9F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):