簡體   English   中英

如何在VBA excel上每n個字符分割一個字符串?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM