2016-06-21 4 views
1

を削除し、あなたがこのような何か行うことができます。VBAのstring.Split C#では空のエントリ

string s = "1--2--3"; 
s.Split(new char[] {'-'}, StringSplitOptions.RemoveEmptyEntries); 

を、代わりに得ることの{1、2、3}、あなたは、{1,2を取得したいです3}

私はVBAでも同じことをしようとしていますが、StringSplitOptions.RemoveEmptyEntriesは表示されません。これを行う最も簡単な方法は何ですか?

+2

内蔵のVBAには何もありません。独自のコードを使用するか、サードパーティのコードを使用する必要があります([example](http://www.cpearson.com/excel/Split.aspx))。 – Heinzi

+0

VBAの 'Split'関数を使用して、配列内の分離されたエントリを読み込みます。配列をループして空のアイテムを削除します。 – cyboashu

答えて

0

VBAでは簡単な方法はありませんが、それぞれを削除します。

Public Function SplitRemoveEmptyEntries(strInput As String, strDelimiter As String) As String() 
Dim strTmp As Variant 
Dim sSplit() As String 
Dim sSplitOut() As String 
ReDim Preserve sSplitOut(0) 
    For Each strTmp In Split(strInput, strDelimiter) 
    If Trim(strTmp) <> "" Then 
     ReDim Preserve sSplitOut(UBound(sSplitOut) + 1) 
     sSplitOut(UBound(sSplitOut) - 1) = strTmp 
    End If 
    Next strTmp 
    ReDim Preserve sSplitOut(UBound(sSplitOut) - 1) 
    SplitRemoveEmptyEntries = sSplitOut 
End Function 
0

あなたの具体的な例を使用して、ハードコードの例では、 - トリプルエントリでは動作しません

Dim arrSplit as Variant 
Dim strExample as String 
Dim i as Integer 

strExample = "1--2--3" 

arrSplit = Split(Replace(strExample,"--","),"-") ' Replace double delimiters 
for i = lBound(arrSplit) to uBound(arrSplit) 
    Debug.Print arrSplit(i) 
next 
関連する問題