Excelマクロ・VBA CSVなどの文字列の分割を行う方法
カンマなど特定の文字で区切られている文字列を
セルごとに分割する方法がExcelでは三つあります。
- テキストファイルウィザード
- 文字列関数
- ユーザ定義関数(マクロ・VBA)
それぞれ下記の特徴があります。
- | 方法 | 特徴 |
---|---|---|
① | テキストファイルウィザード | 柔軟性が高いが手間も大きい。 定型化されていない業務に適切。 |
② | 文字列関数 | 一度関数を作れば、その後の手間が小さい。 ただし数式が非常に複雑。 何度も分割を行う場合に適切。 |
③ | TEXTSPLIT関数 | 2022年9月のアップデートで追加された関数。 簡潔な数式で文字列の分割が可能です。 最新の関数が利用できる状況では最もお勧めです。 |
④ | ユーザ定義関数(マクロ・VBA) | マクロ・VBAを使う必要があるが 手間の少なさと数式のシンプルさで ②より優秀 |
この記事では③のユーザ定義関数(マクロ・VBA)で行う方法を紹介します。
他の方法は関連記事よりリンクする別の記事で紹介します。
目次
サンプルファイル
使用方法
※セキュリティの警告が出る場合は有効化してください。(解除方法↓)
サンプルファイルの中に保存されている
ユーザ定義関数MySplitを利用します。
=MySplit(文字列,区切り文字,取得する要素番号)
引数 | 省略時の値 | 説明 |
---|---|---|
文字列 | 省略不可 | 対象文字列を指定。 |
区切り文字 | 省略不可 | ,などの区切り文字を指定。||など2文字以上でも可。 |
取得する要素番号 | 省略不可 | 分割した結果の何番目の結果を返すかを指定 |
一つ目の引数にCSVなどの文字列、
二つ目の引数にカンマなどの区切り文字、
三つ目の引数に何番目の結果を表示するかを指定します。
(例では2行目にセル指定)

||(パイプ)など区切り文字が2文字以上でも構いません。

コードサンプル
コードは下記のとおりです。
標準モジュールを追加してペーストすれば
任意のブックで使用可能です。
on Explicit
Function MySplit(文字列 As String, 区切文字 As String, 取得する要素番号 As Integer)
On Error GoTo catchError
MySplit = Split(文字列, 区切文字)(取得する要素番号 - 1)
Exit Function
catchError:
' 該当する文字列が存在しない場合は空白を結果とする
MySplit = ""
End Function
Excelを効率的に習得したい方へ
当サイトの情報を電子書籍用に読み易く整理したコンテンツを
買い切り950円またはKindle Unlimited (読み放題) で提供中です。

Word-A4サイズ:1,400ページの情報量で
(実際のページ数はデバイスで変わります)
基本的な使い方、関数の解説(140種類)、
頻出テクニックと実用例(109種類)、
XLOOKUP関数、LET関数、シートビュー、LAMBDA関数、スピルなど便利な新機能を紹介。
体系的に学びたい方は是非ご検討ください。
アップデートなどの更新事項があれば随時反映しています。
なお購入後に最新版をダウンロードするには
Amazonへの問い合わせが必要です。