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

2019年9月4日

カンマなど特定の文字で

区切られている文字列を

セルごとに分割する方法が

Excelでは三つあります。

  1. テキストファイルウィザード
  2. 文字列関数
  3. ユーザ定義関数(マクロ・VBA)

それぞれ下記の特徴があります。

1.柔軟性が高いが手間も大きい。
定型化されていない業務に適切。
2.一度関数を作れば、その後の手間が小さい。
ただし数式が非常に複雑。
何度も分割を行う場合に適切。
3.マクロ・VBAを使う必要があるが
手間の少なさと数式のシンプルさで
②より優秀

この記事では3.ユーザ定義関数(マクロ・VBA)で

行う方法を紹介します。

他の方法は関連記事よりリンクする

別の記事で紹介します。

サンプルファイル

使用方法

※セキュリティの警告が出る場合は有効化してください。(解除方法↓)

サンプルファイルの中に保存されている

ユーザ定義関数MySplitを利用します。

MySplit(文字列,区切り文字,取得する要素番号)

<文字列>
対象文字列を指定。
<区切り文字>
,などの区切り文字を指定。
||など2文字以上でも構いません。
<取得する要素番号>
分割した結果のN番目の結果を返すかを指定。

一つ目の引数にCSVなどの文字列、

二つ目の引数にカンマなどの区切り文字、

三つ目の引数に何番目の結果を

表示するかを指定します。

(例では2行目にセル指定)

カンマ区切りを分割

||(パイプ)など区切り文字が

2文字以上でも構いません。

||(パイプ)区切りを分割

コードサンプル

コードは下記のとおりです。

標準モジュールを追加してペーストすれば

任意のブックで使用可能です。

Option Explicit
Function MySplit(文字列 As String, 区切文字 As String, 取得する要素番号 As Integer)
  On Error GoTo catchError 
  MySplit = Split(文字列, 区切文字)(取得する要素番号 - 1) 
  Exit Function
catchError:
    ' 該当する文字列が存在しない場合は空白を結果とする
    MySplit = ""
End Function

関連記事

マクロ・VBA 最初のプログラム

VBAの基本的な動かし方はこちらを参照

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

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

文字列関数

活用例

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

フォローする