2017-12-04 1 views
-1

に分割優れ以下私はシート状を有するvba_specify特殊文字は、異なる行

DATA_DT G_GLACNO_OLD G_GLACCTNO

2017年4月30日1150007000 130134001L01/L02/L03/L50

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

2017年4月30日1151014026 130154602L01/L02/L03/L50

2017年4月30日1151014027 130154602L01/L02/L03/L50

2017年4月30日1151015003 130154701L01/L02/L03/L50

2017年4月30日1151015004 130154701L01/L02/L03/L50

2017年4月30日1151015006 130154701L01/L02/L03/L50

2017年4月30日1178036000 130974003L01/L02/L03/L30/L50

2017年4月30日1151015011 130154701L01/L02/L03/L50

2017年4月30日1151015001 130154702L01/L02/L03/L50

2017年4月30日1151015002 130154702L01/L02/L03/L50

私は特殊文字」で行を分割したいです/」

ので

2017年4月30日1150007000 130134001L01/L02/L03/L50

私は

2017年4月30日1150007000 130134001L02

2017年4月30日1150007000 130134001L03

2017年4月30日1150007000 130134001L50

なりたい

4/30/2017 1150007000 130134001L01

解決策はありますか?

2017年4月30日1150007000 130134001L01/L02/L03/L50

いくつかの行があります4つのスラッシュを持って、いくつかの行が5つのスラッシュを持っています。

+2

ようこそStackOverflow。これは無料のコード作成サービスではありませんのでご注意ください。しかし、私たちは、仲間のプログラマー(そして志望者)が自分のコードを書くのを助けることを熱望しています。 [良い質問をするにはどうすればよいですか](http://stackoverflow.com/help/how-to-ask)のヘルプトピックをお読みください。また、ツアー中に(https://stackoverflow.com/tour)、バッジを獲得することもできます。その後、達成したいタスクを完了するために、これまでに書いたVBAコードで質問を更新してください。私たちはあなたを待っています。あなたのコード*を完成させるのに役立ちます。 – Ralph

+0

'split'を見て、配列 –

+0

をループすると、コードを書くのにかかる速さです。 – jsotola

答えて

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 

最善の解決策ではありませんが、それは動作します:

はしかし、限り(ここでは任意のランダムなものを置く)__________________________として、私はそれをあなたの入出力に試してみることにしました。 2つ以外のすべてのスラッシュが削除され、文字列に?という記号を付けることはできません。

テキストに少なくとも3のスラッシュがない場合は、ボーナスとして空文字列が表示されます。

+0

おかげでVityata、 これは私のために役立つことがわかりました: https://stackoverflow.com/questions/42425208/vba-split-cell-values-into-multiple-rows-and-keep-other-data 私このアイデアを試してみましょう。 –