Split関数

Split 関数はある文字列を指定した区切り文字により分割した 1 次元配列を返します。

スポンサーリンク

Split関数の使用方法

構文
Split(Expression [, Delimiter] [, Limit] [, Compare])

【戻り値】 バリアント型 (Variant)
引数名 省略 説明
Expression × 任意の文字列式を指定します。 長さ 0 の文字列 (“”) である場合、要素もデータもない空の配列を返します。
Delimiter 文字列の区切りを識別する文字を指定します。 省略すると、区切り文字にスペース (” “) が使用されます。
Limit 返す配列の要素数を指定します。 -1(既定値)を指定すると、すべての文字列を含んだ配列を返します。
Compare 文字列式を評価するときに使用する文字列比較のモードを表す数値を指定します。 引数 Compare を省略すると、Option Compare ステートメントの設定に応じて、比較モードが決まります。
引数Compareに指定可能な定数
定数 説明
vbUseCompareOption -1 Option Compare ステートメントの設定を使用して比較を行います。
vbBinaryCompare 0 バイナリ モードで比較を行います。
vbTextCompare 1 テキスト モード(大文字/小文字、全角/半角 区別なし)で比較を行います。

Split関数の使用例

カンマで分割

CSV形式の文字列をカンマで分割する例です。

Sub sample_ef043_01()
    Dim var     As Variant
    Dim i       As Integer

    'CSV形式の文字列をカンマで分割し、
    'その分割した値を配列(Variant型)で受け取ります。
    var = Split("AAA,1,BBB,2000,あいうえお", ",")

    '分割した内容を表示します。
    For i = LBound(var) To UBound(var)
        Debug.Print i & ":" & var(i)
    Next i
End Sub

 For…Next

実践例

CSVファイルを読み込み、数値だけ2倍にして出力する例です。

Sub sample_ef043_02()
    Dim inFH    As Integer  '入力用ファイル番号
    Dim outFH   As Integer  '出力用ファイル番号
    Dim inFileName  As String
    Dim outFileName As String
    Dim textLine    As String
    Dim Var     As Variant
    Dim i       As Long
    Dim cnt     As Long

    '入力・出力ファイル名の設定
    inFileName = "test.csv"
    outFileName = "test_out.csv"

    'カレントフォルダをこのワークブックと同じにする
    ChDrive ThisWorkbook.Path
    ChDir ThisWorkbook.Path

    '入力ファイルの存在確認
    If Dir(inFileName) = "" Then
        MsgBox "入力ファイルが存在しません。", vbCritical
        End
    End If

    '入力ファイルを開く
    inFH = FreeFile
    Open inFileName For Input As #inFH

    '出力ファイルを開く
    outFH = FreeFile
    Open outFileName For Output As #outFH

    '入力ファイルが終了するまで繰り返す。
    Do While Not EOF(inFH)
        '入力ファイルを1行ずつ読み込む
        Line Input #inFH, textLine
        'カンマで区切る
        Var = Split(textLine, ",")
        '区切った文字を1つずつ処理
        For i = LBound(Var) To UBound(Var)
            '数値かどうかチェック
            If IsNumeric(Var(i)) Then
                '数値であれば2倍する
                Var(i) = 2 * Var(i)
                cnt = cnt + 1
            End If
        Next i

        'カンマで結合した文字列を出力
        Print #outFH, Join(Var, ",")
    Loop

    '入力・出力ファイルを閉じる
    Close #inFH, #outFH

    If cnt > 0 Then
        MsgBox cnt & "個の数値を2倍しました。", vbInformation
    Else
        MsgBox "数値は1つもありませんでした。", vbExclamation
    End If
End Sub

 テキストファイル読込 テキストファイル新規作成 ThisWorkbook MsgBox関数 LBound、UBound関数 Join関数 IsNumeric Dir関数 For…Next Do…Loop Endステートメント

下図は入力ファイルの内容です。数値と文字列を混在させてあります。

入力ファイル(テキストファイル)の内容
入力ファイル(テキストファイル)の内容

上記サンプルマクロを実行すると、数値を2倍にしたファイルが出力されてから、以下の処理結果が表示されます。

実行結果(ダイアログボックス)
実行結果(ダイアログボックス)

出力ファイルを見ると、数値が2倍されているのがわかります。

実行結果(出力ファイル)
実行結果(出力ファイル)

【参考】入力ファイルがない場合は以下の警告メッセージが表示されます。

入力ファイルがない場合のメッセージ
入力ファイルがない場合のメッセージ

【参考】数値が1つもない場合は以下の注意メッセージが表示されます。

数値が1つもない場合のメッセージ
数値が1つもない場合のメッセージ
タイトルとURLをコピーしました