VBA入門
第115回.Split関数

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
最終更新日:2020-09-02

第115回.Split関数


各要素(区切り文字)ごとに区切られた文字列から 1次元配列を作成し返します。
つまり、
Split関数は、文字列を指定の区切り文字で分割し1次元配列を作る関数です。
マクロVBAの文字列操作においてはSplit関数はとても重要かつ必須になりますので、しっかりと習得してください。


Split関数

Split関数の構文
Split(expression[, delimiter[, limit[, compare]]])



expression

必ず指定します。
文字列と区切り文字を含んだ文字列式を指定します。
引数 expression が長さ 0 の文字列 (") である場合、Split 関数は、要素もデータもない空の配列(UBoundが-1)を返します。

delimiter

省略可能です。・・・でも必ず指定して下さい。
文字列の区切りを識別する文字を指定します。
引数 delimiter を省略すると、区切り文字に半角スペース (" ") が使用されます。
引数 delimiter が長さ 0 の文字列 ("") である場合は、引数 expression 全体の文字列を含む単一の要素の配列を返します。

limit

省略可能です。
通常は省略します、省略値は-1。
返す配列の要素数を指定します。
-1 を指定すると、すべての文字列を含んだ配列を返します。

compare

省略可能です。
文字列式を評価するときに使用する文字列比較のモードを表す数値を指定します。
vbBinaryCompare : バイナリ モードで比較を行います。
vbTextCompare : テキスト モードで比較を行います。
※バイナリ モードでは、全角半角、大文字小文字が区別されます。
  テキストモードでは、全角半角、大文字小文字が区別されません。


配列の添字の最小値は常に、0 です。
Option Base ステートメントの影響を受けません。
他の配列の下限を1にしている場合などは、添字の指定に注意してください。

区切り文字が文字列式内に存在しない場合

区切り文字(delimiter)が文字列式(expression)内に存在しない場合は、
文字列式全体の文字列を含む単一の要素(UBoundが0)の配列を返します。
区切り文字(delimiter)に長さ0の文字列 ("") を指定した場合も同様です。

Dim v
v = Split("a,b,c", " ")

このとき変数Vは、以下の状態になります。

VBA マクロ Split関数

空文字("")をSplitした場合



Dim v
v = Split("")

このとき変数Vは、以下の状態になります。

IsArray(v) ・・・ True
TypeName(v) ・・・ String()
LBound(v) ・・・ 0
UBound(v) ・・・ -1

VBA マクロ Split関数

Split関数の使用例

Sub sample()
  Dim strBuf As String
  Dim strSplit
  Dim i As Long
  strBuf = "aa,bbb,cccc,dd"
  strSplit = Split(strBuf, ",")
  MsgBox Join(strSplit, vbLf)
End Sub

上記では、
文字列"aa,bbb,cccc,dd"を、","で区切り、配列にしています。
そして、配列をJoin関数で、VbLfでつなげる事で、
メッセージBOXに、改行して表示しています。

マクロ VBA Split関数

マクロ VBA Split関数

以下も参考にしてください。

CSVの読み込み方法
エクセルのVBAでのCSVの読込方法としては。・テキストファイルとして読み込む ・ワークブックとして読み込む ・クエリーテーブルを使う ・ADOを使う ・PowerQueryを使う 大別するとこのようになります。この記事を書いた当初は、エクセルのVBAでCSVの読み込みについてネットで検索したところ、
入力規則のリスト入力を確認する
入力規則のリスト入力は、Excelの機能の中でも頻繁に使われる機能です。入力規則の目的として、リスト内のデータのみの入力に限定したいと言う事になりますが、コピペで値の貼り付けを行うと、どんな値でも入力出来てしまいます。このエクセルの仕様はとても不便なものですが仕方ありません。



同じテーマ「マクロVBA入門」の記事

第112回.動的配列(Redim)
第113回.配列に関連する関数
第114回.セル範囲⇔配列(マクロVBA高速化必須テクニック)
第115回.Split関数
第116回.ファイル操作Ⅱ(OpenとClose)
第117回.ファイル操作Ⅱ(Line Input #)
第118回.ファイル操作Ⅱ(Print #)
第119回.ファイルシステムオブジェクト(FileSystemObject)
第120回.OnTimeメソッド
第121回.SendKeysメソッドとAppActivateステートメント
第122回.Shell関数


新着記事NEW ・・・新着記事一覧を見る

タプル(tuple型、イミュータブル)|Python入門(9月15日)
リスト(list型、配列)|Python入門(9月14日)
文字列操作(str型)|Python入門(9月13日)
greeenはgreenに、greeeeeNをGReeeeNに変換|エクセル雑感(9月13日)
while文とデバッグ(ステップイン)|Python入門(9月12日)
入力規則で○△を入れる数を制限する方法|エクセル雑感(9月12日)
コレクションの要素を削除する場合|エクセル雑感(9月11日)
for文とイテラブルオブジェクト|Python入門(9月10日)
if文とインデントによるブロック|Python入門(9月9日)
ショートカット(Ctrl+Shift+n)抜け番ばどれだ|エクセル雑感(9月8日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.マクロって何?VBAって何?|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
7.繰り返し処理(For Next)|VBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.とにかく書いてみよう(Sub,End Sub)|VBA入門
10.マクロはどこに書くの(VBEの起動)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ