![](/img/trans.png)
[英]How to split a string every nth character on VBA, unless nth character = “ ”?
[英]How to split a string every nth character on VBA excel?
我有一个类似于
"1111 2222222 3333 77777 44444 55555 6666 99999"
是否可以在第10个字符后分割字符串,即
1111 22222
22 3333 77
777 44444
55555 6666
99999
您可以使用Mid
函数(类似于@Kemal Al GAZZAH答案)来轻松实现此目的,但是对循环使用Step
选项而不是计算输出的数量
Sub test()
Dim TestStr
Dim i As Long, n As Long
Dim SplitStr As String
TestStr = "1111 2222222 3333 77777 44444 55555 6666 99999"
n = 10
For i = 1 To Len(TestStr) Step n
SplitStr = SplitStr & Mid(TestStr, i, n) & vbNewLine
Next i
MsgBox SplitStr
End Sub
您也可以将其编写为Function
,以使其更加实用
Option Explicit
Public Function SplitString(StringToSplit As String, n As Long) As String()
Dim i As Long, arrCounter As Long
Dim tmp() As String
ReDim tmp(0 To CLng(Len(StringToSplit) / n))
For i = 1 To Len(StringToSplit) Step n
tmp(arrCounter) = Mid(StringToSplit, i, n)
arrCounter = arrCounter + 1
Next i
SplitString = tmp
End Function
Public Sub test()
Dim TestStr As String
TestStr = "1111 2222222 3333 77777 44444 55555 6666 99999"
MsgBox Join(SplitString(TestStr, 10), vbNewLine)
End Sub
您可以使用此代码,它使用函数MID进行循环, 该函数从字符串(3个参数字符串,开始和长度)中检索n个字符。
下面的代码具有将strig作为参数拆分的一个函数,我将该字符串放入cell(1,2),结果从第1行开始,列在第1列中,您当然可以更改
Sub splitstring(mystring)
n = Int(1 + Len(s) / 10)
mystring1= mystring
For i = 0 To n
mystring1= Mid(mystring, 1 + i * 10, 10)
Cells(i + 1, 1) = mystring1
Next
End Sub
Sub call_me()
'splitstring ("1111 2222222 3333 77777 44444 55555 6666 99999")
splitstring (Cells(1, 2))
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.