オーロラさんの勉強帳

SESの客先常駐勤務。データベース、Excel、Excel VBA、ネットワーク、LinuxなどIT関連のことを主に書いていきます。

【Excel】括弧内の文字列を抽出する方法 ~()、【】、<>などのカッコに囲まれた文字を調べる~

MID関数とFIND関数を使って、【】、()、<>などの括弧に囲まれている文字列を抽出する方法を紹介します。


目次

カッコ内の文字列の抽出方法

以下の関数を使うことでカッコに囲まれた文字列を抽出することができます。

【カッコ内の文字列を抽出する関数】
=MID(対象セル,FIND("【",対象セル)+1,FIND("】",対象セル)-FIND("【",対象セル)-1)

※同じ種類のカッコが複数ある場合は、正しい結果を得られないことがあります。
例:【Excel【関数】【学習】】のような文字列では、意図した部分を抜き取れません。

※上記の【、】の部分を書き換えることで()、「」、<>などのカッコに囲まれた文字を抽出することができます。
()内の文字列を抽出する例:=MID(B3,FIND("(",B3)+1,FIND(")",B3)-FIND("(",B3)-1)


以下の例では、【】に囲まれた文字をC3セルに抽出しています。
f:id:auroralights:20210425115944p:plain


上記の関数では対象のカッコがない場合は「#VALUE!」エラーになるので、以下のように対象のカッコ内場合は
IFERROR関数で「対象なし」と返すようにするといいと思います。

【カッコ内の文字列を抽出する関数】IFERROR追加
=IFERROR(MID(B3,FIND("【",B3)+1,FIND("】",B3)-FIND("【",B3)-1),"対象なし")


以下の例では、【】がある場合は【】に囲まれた文字を抽出し、【】がない場合は「対象なし」と返すようにしています。
f:id:auroralights:20210425121706p:plain


関数の仕組みを考えよう

以下のカッコ内の文字列を抽出する関数がどのようになっているか考えてみましょう。
=IFERROR(MID(B3,FIND("【",B3)+1,FIND("】",B3)-FIND("【",B3)-1),"対象なし")

MID関数とFIND関数の部分の考え方

まずは以下のMID関数とFIND関数の部分を見ていきます。
MID(B3,FIND("【",B3)+1,FIND("】",B3)-FIND("【",B3)-1)


MID関数は以下のように対象文字列の開始位置から指定した文字数分の文字を抽出する関数です。
MID(文字列,開始位置,文字数)

FIND関数は以下のように対象に対して、検索文字列が何文字目にあるか返す関数です。
FIND(検索文字列,対象)



MID関数は以下のように考えます。
f:id:auroralights:20210425123514p:plain

対象の「セルB3」に対して、開始位置「FIND("【",B3)+1」、文字数「FIND("】",B3)-FIND("【",B3)-1」を指定しています。


次に開始位置のFIND関数を考えます。
f:id:auroralights:20210425124149p:plain

FIND関数で対象「セルB3」の中で先頭から「【」までの文字数を返しています。
プラス1しているのは、抽出したい文字列は【の次の文字から抜き出したいからです。


次に文字数のFIND関数を考えます。
f:id:auroralights:20210425124828p:plain

2つのFIND関数と「-1」があります。
最初のFIND関数では対象「セルB3」の「】」がある位置の文字数を返しています。
2つ目のFIND関数では対象「セルB3」の「【」がある位置の文字数を返しています。

最初のFIND関数の結果から2つ目のFIND関数の結果を引いて、さらにマイナス1としています。
これは【】内の文字を抽出するためです。
以下の画像を見るとわかりやすいですが、3文字目の【、7文字目の】に囲まれている3文字を抜き出したいので
マイナス1をする必要があります。
f:id:auroralights:20210425125331p:plain


最後にIFERROR関数でエラーの時の処理を付け加えています。
IFERROR(値,エラーの場合の値)


関数の組み合わせも一つずつ考えていけば大したことありません。
以上がカッコ内の文字を抽出する方法でした。