関数 EXCEL&VBA

エクセルで文字列を抽出「ここからここまで」の真ん中を抜き出す方法

エクセルでセルに入力された文字列から、任意の文字列を抽出するケースは色々あります。

中でも厄介なのは「ここからここまで」のように、始点となる文字列と終点となる文字列だけがわかっていて、位置が定まらず、その 真ん中の「文字数が定まらない文字列」を抽出するパターンです。

今回はそんなときに役立つ関数技を紹介します。



文字列を抽出する基本の関数

まずはじめに、文字列を抽出するときに便利な関数をいくつか紹介します。

LEFT関数

LEFT関数とは、文字列の先頭(左)から指定された数の文字を返す関数で、「左から〇文字を抜き出す」というときに便利です。
書式は;

LEFT( 文字列, [文字数] )

のように表されます。
[文字数] の部分は省略が可能で、省略した場合は左から1文字だけを抽出します。

RIGHT関数

一方、RIGHT関数とは、LEFT関数の逆で 文字列の末尾(右)から指定された数の文字を返す関数で、「右から〇文字を抜き出す」というときに便利です。
書式は;

RIGHT( 文字列, [文字数] )

のように表されます。
[文字数] の部分はLEFT関数と同時に省略が可能で、省略した場合は右から1文字だけを抽出します。

MID関数

MID関数とは、文字列の指定された位置から指定された数の文字を返す関数で、「(左から)〇文字目から△文字を抜き出す」というときに便利です。
書式は;

MID( 文字列, 開始位置, 文字数 )

のように表されます。
実は今回の記事の主役となる関数のひとつがこの MID関数 です。

ただ、条件が「開始位置はキーワードがある場所(流動的)」で「文字数は2番目のキーワードがある位置(流動的)の手前まで」となり難度が高くなります。

文字列の抽出「ここから」と「ここまで」

下のサンプルは、セルA2にアンケートデータの全データがひとつのセルに入っているものとします。

その中から「コメント」として回答された部分(赤字部分)のみを抽出します。

コメントの「開始位置」は、その前の「ご要望」に入力された文字数によって変化します。
コメントの「文字数」は回答者によってさまざまで、文字数を特定することはできません。


▲コメント文だけをきれいに抜き出せ!

文字列の位置を検索する関数

基本的には MID関数を使うのですが、上のサンプルでは流動的な「開始位置」と「文字数」をしっかり捉える必要があります。
こんな時に便利なのが FIND関数 です。


FIND関数

FIND関数とは

FIND関数とは、任意の文字列が他の文字列の中で最初に現れる位置を検索する関数です。
書式は;

FIND( 検索文字列, 対象, [開始位置] )

のように表されます。

これで「コメント:」の開始位置がわかります。
また、「年齢層:」の開始位置もわかることで、その差分の文字数がコメントの文字数となります。

「開始位置」=「コメント:」の開始位置 + 5文字(コメント:)うしろ
「文字数」=「年齢層:」の開始位置 - 「コメント:」の開始位置 - 5文字



開始位置と文字数がわからないときの文字列抽出

MID関数とFIND関数の組み合わせ

これまでにわかった内容をもとに、サンプルのセルA5に入る数式を考えます。
これまでに分かったこと;

「開始位置」=「コメント:」の開始位置 + 5文字(コメント:)うしろ
「文字数」=「年齢層:」の開始位置 - 「コメント:」の開始位置 - 5文字

MID関数の書式は;

=MID( 文字列, 開始位置, 文字数

なので、FIND関数を組み込んでみると;

=MID ( A2, FIND ("コメント:",A2)+5, FIND ("年齢層:",A2)-FIND ("コメント:",A2)-5 )

これをセルA5に入力すると;


▲コメントの抽出に成功

うまくコメント文だけを抽出することができました。

以上で『エクセルで文字列を抽出「ここからここまで」の真ん中を抜き出す方法』は終了ですが、この考え方を応用すれば「コメント以降を抽出」や「空白までを抽出」などにも応用が可能です。

他の関連記事と合わせて仕事や趣味に役立ててください。

関連記事・広告



併せて読んでおくとさらに便利

EXCELで「文字列の置換・削除」方法をパターン別にまとめた
関数・文字列操作
Excelの特定の文字を削除したり文字列を置換(置き換え)したり、文字列に含まれる余分なスペースや文字を削除したりする方法のまとめです。置換の関数や削除の関数をパターン別に例示し...

エクセルで姓名をスペースで分けるのに関数は要らない|区切り位置
文字列操作・区切り位置
エクセルで姓名を分ける方法を解説。1つのセルに姓と名がスペースをはさんで入力されている場合は、関数を使わずに姓名を分けることが可能です。ヒントは「区切り位置」。

EXCELで住所を都道府県と市区町村以下に分割する
文字列操作
EXCELで住所を都道府県と市区町村以下に分割する方法を解説。その住所情報を統計データとして活用する際に『都道府県』と『市区町村以下』にセルを分割して管理できると活用の幅も広がります。

エクセルで全角から半角に文字列を置換する方法
文字列操作・ASC関数
エクセルで全角から半角に文字列を置換する方法を解説。一生懸命入力したデータも、全角文字と半角文字が混在していると美しくない。関数やVBAで全角から半角に文字列を揃えて見栄えを良くしよう。

エクセルでアルファベットを大文字に変換して揃える関数
文字列操作・UPPER関数
エクセルでアルファベットを大文字に変換して揃える方法について解説します。今回は、大文字と小文字が混在しているアルファベットをすべて大文字に揃える関数に着目します。

※その他、関連記事はこの記事の下の方にもあります。




-関数, EXCEL&VBA
-, ,