Split 関数はある文字列を指定した区切り文字により分割した 1 次元配列を返します。
Split関数の使用方法
引数名 | 省略 | 説明 |
---|---|---|
Expression | × | 任意の文字列式を指定します。 長さ 0 の文字列 (“”) である場合、要素もデータもない空の配列を返します。 |
Delimiter | ○ | 文字列の区切りを識別する文字を指定します。 省略すると、区切り文字にスペース (” “) が使用されます。 |
Limit | ○ | 返す配列の要素数を指定します。 -1(既定値)を指定すると、すべての文字列を含んだ配列を返します。 |
Compare | ○ | 文字列式を評価するときに使用する文字列比較のモードを表す数値を指定します。 引数 Compare を省略すると、Option 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
実践例
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つもない場合は以下の注意メッセージが表示されます。