Excelマクロ・VBA CSVなどの文字列の分割を行う方法

2022年9月12日

カンマなど特定の文字で区切られている文字列を

セルごとに分割する方法がExcelでは三つあります。

  1. テキストファイルウィザード
  2. 文字列関数
  3. ユーザ定義関数(マクロ・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への問い合わせが必要です。

関連記事

マクロ・VBAの学習・活用方法の記事一覧

他の方法で区切り文字列の分割を行う

テキストファイルウィザード

文字列関数

活用例

姓と名(苗字と名前)を結合・分割する方法