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

2020年5月5日

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

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

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

方法特徴
テキストファイルウィザード柔軟性が高いが手間も大きい。
定型化されていない業務に適切。
文字列関数一度関数を作れば、その後の手間が小さい。
ただし数式が非常に複雑。
何度も分割を行う場合に適切。
ユーザ定義関数(マクロ・VBA)マクロ・VBAを使う必要があるが
手間の少なさと数式のシンプルさで
②より優秀

この記事では②の文字列関数で行う方法を紹介します。

他の方法は関連記事よりリンクする別の記事で紹介します。

サンプルファイル

数式が複雑で準備の手間があるのでサンプルファイルを

そのまま使っていただくのが最も手間が少ないです。

B2セルにカンマやパイプ(||)などの区切り文字を指定して

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

するとD~M列に分割した文字列が表示されます。

50列以上存在する場合はD4以降の数式をコピーしてください。

サンプルファイル

作成手順

まず作業用の文字列を作成します。数式は下記のようになります。

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

これにより文字列の前後で区切り文字で囲みます。

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

次に1から連番のセルを用意して(N番目)、その数式をコピーします。

IFERROR関数MID関数FIND関数SUBSTITUTE関数LEN関数を指定します。

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

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

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

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

関連記事

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

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

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

活用例

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