【VBA入門】Split関数で文字列を分割(複数条件や正規表現も解説)

Split関数って使っていますか?指定の文字を区切り文字として、文字列を分割する場合に使用します。この記事では、Split関数についてSplit関数の使い方という基本的な内容から、

  • UBound関数で分割後の要素数を調べる
  • 複数の文字で文字列を分割する方法
  • 正規表現で文字列を分割する方法

など応用的な内容についても解説していきます。今回はSplit関数について、使い方をわかりやすく解説します!

Split関数の使い方

Split関数は、指定の文字で文字列を分割し、分割したそれぞれの文字列を一次元配列に格納します。格納する配列は動的配列で宣言する必要があります。Split関数は以下のように記述します。

区切り文字は省略することができ、省略する場合は半角スペース(“ ”)が区切り文字に指定されます。ちなみに文字列を分割するSplit関数の逆で、文字列を結合する場合にはJoin関数を使います。

スペースで分割して配列に格納する

それでは実際にSplit関数を使って文字列を分割するサンプルコードをみていきましょう。

Split01

画像:実行結果

このサンプルコードでは、Split関数を使って文字列を分割しています。Split関数の区切り文字の指定を省略しているので半角スペース(” ”)が区切り文字になります。

半角スペースで分割されたそれぞれの文字列は動的配列arrの要素として格納され、それぞれの要素を出力表示しています。

カンマで分割

カンマはCSVファイルの区切り文字として使われます。カンマを区切り文字で指定する場合について、サンプルコードで確認しましょう。

Split01

画像:実行結果

タブで分割

タブはTSVファイルで区切り文字として使われます。タブを区切り文字で指定する場合について、サンプルコードで確認しましょう。

Split01

画像:実行結果

改行文字で分割

改行文字も区切り文字として指定することができます。サンプルコードで確認しましょう。

Split03

画像:実行結果

UBound関数で分割後の要素数を調べる

Split関数で返される動的配列の要素数を調べるには、UBound関数とLBound関数を使用します。UBound関数は引数に指定した配列で使用できる最も大きいインデックス番号を返します。LBound関数は引数に指定した配列で使用できる最も小さいインデックス番号を返します。

配列の要素数は以下の式で求めることができます。

サンプルコードで確認しましょう。

Split02

画像:実行結果

UBound関数の使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。

複数の文字で文字列を分割する方法

「( )」(カッコ)のようにペアで使われる場合、「(」、「)」のどちらでも文字列を分割したいこともあります。

しかし、Split関数は区切り文字を複数指定することはできません。複数の文字で文字列を分割したい場合は、Replace関数を使って複数の区切り文字を1つに統一します。Replace関数は第1引数に変更する文字列を含む文字列を指定します。

第2引数には変更する文字列を、第3引数には変更後の文字列を指定します。統一した区切り文字をSplit関数の区切り文字に指定して分割します。サンプルコードで確認しましょう。

Split04

画像:実行結果

このサンプルコードではReplace関数を使って文字列str1中の「)」を「(」に変更しています。変更後の文字列str2では区切り文字が「(」に統一されています。統一された区切り文字「(」を指定してSplit関数で文字列を分割しています。

Replace関数の使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。

正規表現で文字列を分割する方法

先ほどは2つの区切り文字で分割する方法についてご紹介しましたが、もっとたくさんの文字で分割したい場合は面倒ですよね。そんな場合は正規表現を使うと便利です。

でも、Split関数は正規表現を使って分割することはできません。正規表現を別の区切り文字に変換してから、変換後の区切り文字を使って分割します。正規表現を別の区切り文字に変換するにはRegExpオブジェクトのReplace関数を使います。

サンプルコードで確認していきましょう。

Split05

画像:実行結果

このサンプルコードでは、まず「〒 都道府県市区町村」これらの文字を正規表現として指定しています。RegExpオブジェクトのPatternプロパティを使って正規表現を指定します。そのあとでRegExpオブジェクトのReplace関数を使って正規表現を「,」に変換しています。

変換された区切り文字「,」を指定してSplit関数で文字列を分割しています。

まとめ

ここでは、Split関数の使い方について説明しました。Split関数は複数の区切り文字を指定することも、正規表現を区切り文字として指定することもできません。

しかし1つの区切り文字に変換し、その区切り文字を指定することで分割できるようになります。使いこなすことができるように、この記事を何度も参考にして下さいね!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

長野 透

長野 透

熊本在住のフリープログラマ兼ライターです。C/C++/C#、Java、Python、HTML/CSS、PHPを使ってプログラミングをしています。専門は画像処理で最近は機械学習、ディープラーニングにはまっています。幅広くやってきた経験を活かしてポイントをわかりやすくお伝えしようと思います。
お問合せはこちらでも受け付けています。
[email protected]

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説