Excel VBA/基于字符计数将字符串拆分为列

Excel VBA/基于字符计数将字符串拆分为列,excel,vba,Excel,Vba,我想拆分一个包含41个字符的字符串,如下例所示: 01288D29424001190601AJGBGR1413190528SR117 根据从左到右的字符数分成不同的列,用于拆分字符串的常量字符数标准为: 5 6 3 6 2 4 4 6 1 1 3 01288 D29424 001 190601 AJ GBGR 1413 190528 S R 117 考虑到每个空格代表一个新列,上面的字符串将是我的最终结果。将字段宽度放置在B1到L1中

我想拆分一个包含41个字符的字符串,如下例所示:
01288D29424001190601AJGBGR1413190528SR117

根据从左到右的字符数分成不同的列,用于拆分字符串的常量字符数标准为:

  5     6     3    6    2   4    4     6    1 1  3

01288 D29424 001 190601 AJ GBGR 1413 190528 S R 117

考虑到每个空格代表一个新列,上面的字符串将是我的最终结果。

将字段宽度放置在B1L1中,并将数据放置在A2中。然后在B2中输入:

=LEFT(A2,B1)
=MID($A$2,SUM($B$1:B$1)+1,C$1)
并在C2中输入:

=LEFT(A2,B1)
=MID($A$2,SUM($B$1:B$1)+1,C$1)
并复制到:

VBA的逻辑相同:

Sub poiuyt()
    Dim s As String, arr(0 To 10) As String, i As Long
    Dim msg As String

    msg = ""
    s = "01288D29424001190601AJGBGR1413190528SR117"
    wdth = Array(5, 6, 3, 6, 2, 4, 4, 6, 1, 1, 3)
    strt = Array(1, 6, 12, 15, 21, 23, 27, 31, 37, 38, 39)

    For i = 0 To 10
        arr(i) = Mid(s, strt(i), wdth(i))
        msg = msg & vbCrLf & arr(i)
    Next i

    MsgBox msg
End Sub

通过L1将字段宽度放入B1,并将数据放入A2。然后在B2中输入:

=LEFT(A2,B1)
=MID($A$2,SUM($B$1:B$1)+1,C$1)
并在C2中输入:

=LEFT(A2,B1)
=MID($A$2,SUM($B$1:B$1)+1,C$1)
并复制到:

VBA的逻辑相同:

Sub poiuyt()
    Dim s As String, arr(0 To 10) As String, i As Long
    Dim msg As String

    msg = ""
    s = "01288D29424001190601AJGBGR1413190528SR117"
    wdth = Array(5, 6, 3, 6, 2, 4, 4, 6, 1, 1, 3)
    strt = Array(1, 6, 12, 15, 21, 23, 27, 31, 37, 38, 39)

    For i = 0 To 10
        arr(i) = Mid(s, strt(i), wdth(i))
        msg = msg & vbCrLf & arr(i)
    Next i

    MsgBox msg
End Sub

欢迎来到SO。您使用VBA标记了问题,因此请发布您尝试过的代码。SO不是免费的编码服务。欢迎使用SO。您使用VBA标记了问题,因此请发布您尝试过的代码。所以这不是免费的编码服务。