excel vba_specify特殊字符然后拆分为不同的行

时间:2017-12-04 08:30:31

标签: excel vba

我有一张如下表

  

DATA_DT G_GLACNO_OLD G_GLACCTNO

     

4/30/2017 1150007000 130134001L01 / L02 / L03 / L50

     

4/30/2017 1151009000 130150901L01 / L02 / L03 / L50

     

4/30/2017 1151014026 130154602L01 / L02 / L03 / L50

     

4/30/2017 1151014027 130154602L01 / L02 / L03 / L50

     

4/30/2017 1151015003 130154701L01 / L02 / L03 / L50

     

4/30/2017 1151015004 130154701L01 / L02 / L03 / L50

     

4/30/2017 1151015006 130154701L01 / L02 / L03 / L50

     

4/30/2017 1178036000 130974003L01 / L02 / L03 / L30 / L50

     

4/30/2017 1151015011 130154701L01 / L02 / L03 / L50

     

4/30/2017 1151015001 130154702L01 / L02 / L03 / L50

     

4/30/2017 1151015002 130154702L01 / L02 / L03 / L50

我想用特殊字符“/”

分割行

所以

  
    

4/30/2017 1150007000 130134001L01 / L02 / L03 / L50

  

我想成为

  

4/30/2017 1150007000 130134001L02

     

4/30/2017 1150007000 130134001L03

     

4/30/2017 1150007000 130134001L50

     

4/30/2017 1150007000 130134001L01

有快速解决方案吗?

  

4/30/2017 1150007000 130134001L01 / L02 / L03 / L50

有些行有4个斜杠,有些行有5个斜杠。

1 个答案:

答案 0 :(得分:0)

评论中所说的是完全正确的 - 如果这不是代码编写服务等,你应该尝试一下。

然而,就__________________________(在这里放任何随机的东西)而言,我已经决定尝试输入输出:

Option Explicit

Public Sub TestMe()

    Debug.Print RemoveSomeSlashed("4/30/2017 1151015004 130154701L01 / L02 / L03 / L50")
    Debug.Print RemoveSomeSlashed("4/30/2017 11780 130974003L01 / L02 / L03 / L30 / L50")

End Sub

Public Function RemoveSomeSlashed(myInput As String) As String

    Dim cnt         As Long
    Dim startCnt    As Long
    Dim endCnt      As Long
    Dim compare     As String

    compare = Replace(myInput, "/", "")
    endCnt = Len(myInput) - Len(compare) - 2

    For cnt = Len(myInput) To 1 Step -1
        If Mid(myInput, cnt, 1) = "/" Then
            Mid(myInput, cnt, 1) = "?"
            startCnt = startCnt + 1
            If startCnt = endCnt Then
                RemoveSomeSlashed = Replace(myInput, "?", "")
                Exit Function
            End If
        End If
    Next cnt

End Function

这不是最好的解决方案,但它确实有效。这个想法是它删除了所有斜杠而不是两个,并且不允许在字符串中使用?符号。

作为奖励,如果您的文字至少没有3斜杠,它将显示空字符串:)。