在 Excel VBA 代码中提取第 n 个字符后的文本并放入第一行下的下一行

问题描述 投票:0回答:1

我对 VBA 很陌生,也许有人可以帮助我解决我的问题。 我的行中有(这个例子)

A1: 52/ATL/340/M/50/C
A2: 52/IST/620/M/DBX/200/D

我需要在第 4 个“/”之后首先拆分到下一行,并将前 6 个字符串“52/ATL/”添加到“50/C” - 基本上:“52/ATL/50/C”

B1: 52/ATL/340/M
B2: 52/ATL/50/c
B3: 52/IST/620/M
B4: 52/DBX/200/D

我用 SUBSTITUTE 尝试它,但我的问题 - 这个函数不在 VBA 代码中,而且我不知道如何在第 4 个“/”之后拆分并放下第一个“/”和第二个“/”中的文本。

excel vba string split substitution
1个回答
0
投票

微软文档:

分割功能

加入功能

Range.Resize 属性 (Excel)

Sub Demo()
    Dim i As Long, j As Long
    Dim arrData, arrRes, iR As Long, aTxt
    arrData = ActiveSheet.Range("A1").CurrentRegion.Value
    ReDim arrRes(1 To UBound(arrData) * 2, 0)
    For i = LBound(arrData) To UBound(arrData)
        aTxt = Split(arrData(i, 1), "/")
        j = UBound(aTxt)
        If j >= 3 Then
            iR = iR + 1
            arrRes(iR, 0) = Join(Array(aTxt(0), aTxt(1), aTxt(2), aTxt(3)), "/")
            If j = 5 Then
                iR = iR + 1
                arrRes(iR, 0) = Join(Array(aTxt(0), aTxt(1), aTxt(4), aTxt(5)), "/")
            ElseIf j = 6 Then
                iR = iR + 1
                arrRes(iR, 0) = Join(Array(aTxt(0), aTxt(4), aTxt(5), aTxt(6)), "/")
            End If
        End If
    Next i
    ActiveSheet.Columns(3).Clear
    ActiveSheet.Range("C1").Resize(iR).Value = arrRes
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.