Excel CSVなどの文字列の分割を関数で行う方法

2019年8月28日

カンマなど特定の文字で

区切られている文字列を

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

Excelでは三つあります。

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

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

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

この記事では2.文字列関数で

行う方法を紹介します。

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

別の記事で紹介します。

サンプルファイル

数式が複雑で準備の手間があるので

サンプルファイルを

そのまま使っていただくのが

最も手間が少ないです。

B2セルにカンマやパイプ(||)などの

区切り文字を指定して

B5以降に分割したい文字を記入します。

するとD~M列に分割した

文字列が表示されます。

50列以上存在する場合は

D4以降の数式をコピーしてください。

サンプルファイル

作成手順

まず作業用の文字列を作成します。

数式は下記のようになります。

=区切り文字&文字列&区切り文字

これにより文字列の前後で

区切り文字で囲みます。

区切り文字で囲んだ作業用セルを作成

次に1から連番のセルを用意して(N番目)

その数式をコピーします。

=IFERROR(
 MID(作業用セル,
 FIND(代替文字,SUBSTITUTE(作業用セル,区切り文字,代替文字,N番目)) + LEN(区切り文字),
 FIND(代替文字,SUBSTITUTE(作業用セル,区切り文字,代替文字,N番目+1)) -
 (FIND(代替文字,SUBSTITUTE(作業用セル,区切り文字,代替文字,N番目)) + LEN(区切り文字)))
 ,"")
作業用セル区切り文字で囲んだ文字列を
列のみ$で指定します。
代替文字作業用セル中に登場しない1文字を
行列共に$で指定します。
区切り文字区切り文字を行列共に$で指定します。
2文字以上でも問題ありません。
N番目1以降の数字を指定します。
ここでは項目行に数値を記載して
行のみ$で指定しています。

これにより1以降の行(サンプルではD5以降)に

分割された文字が表示されます。

分割する関数が完成した状態

関連記事

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

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

ユーザ定義関数(マクロ・VBA)

活用例

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

使用した関数の詳細

各種エラーの発生条件と判定関数

左・右より文字数を指定して文字列を切り出す(LEFT/MID/RIGHT関数)

指定の文字が何文字目にあるかを調べる (FIND関数)

特定の文字列を置換(SUBSTITUTE関数)

フォローする