Как разбить строку каждый n-й символ в VBA Excel? - PullRequest
0 голосов
/ 27 марта 2019

У меня есть строка, похожая на

 "1111 2222222 3333 77777 44444 55555 6666 99999"

Возможно ли разбить строку после каждого 10-го символа, т. Е.

1111 22222
22 3333 77
777 44444 
55555 6666
99999

Ответы [ 2 ]

2 голосов
/ 27 марта 2019

Вы можете достичь этого довольно просто, используя функцию 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
1 голос
/ 27 марта 2019

Вы можете использовать этот код он использует цикл, используя функцию MID , которая получает n символов в строке (3 строки параметров, начало и длина)

В приведенном ниже коде есть одна функция с разделителем в качестве параметра Я поместил эту строку в ячейки (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

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...