
今回は、MID 関数 の応用編として、特定の文字で区切られた文字列を抜き出す関数の使い方をご紹介していきます。
なお、当サイトでは Excel ではなく Numbers を使って解説しています。
目次
特定の文字列で囲まれた、あいだの文字を抜き出す
今回の例では、部署名の「部」と「課」の文字列で囲まれた、課の「名称だけ」を抜き出してみましょう。
一見 MID 関数だけで出来そうに感じられますが、文字数がバラバラなので MID 関数 と FIND 関数 を組み合わせることで解決します。
・MID 関数:文字列の中から指定した文字数を抜き出す
・FIND 関数:検索文字が最初に現れる位置を求める


まずは 各関数の式をおさらいしましょう。
MID 関数 の式の確認
= MID ( 対象文字列, 開始位置, 文字列の長さ )
対象文字列 | 抜き出す文字列のセルを指定 |
開始位置 | 「対象文字列」から抜き出す文字の開始位置を指定 |
文字列の長さ | 抜き出す文字列の数を指定 |
FIND 関数 の式の確認
= FIND ( 検索文字列, 対象文字列 [, 開始位置] )
※ 開始位置 は省略ができます。
検索文字列 | 検索する文字列をのセルを指定 |
対象文字列 | 「検索文字列」の位置を求める文字列を指定 |
(開始位置) | 「対象文字列」内で検索を開始する位置を指定 |
関数の手順の整理
まず、関数の式の立て方を順を追って整理してみましょう。
※ のちほどひとつずつご説明しますのでご安心ください。
Step 1 | MID 関数の「対象文字列」を指定 |
Step 2 | MID 関数の「開始位置」に FIND 関数を入れ子にする |
Step 3 | FIND 関数の「検索文字列」に特定の文字を、 そして「対象文字列」に「検索文字列」の位置を求める文字列のセルを指定 |
Step 4 | MID 関数の「開始位置」に「検索文字列」を含まない場合は、「+1」を入力 |
Step 5 | MID 関数の「文字列の長さ」に FIND 関数を入れ子にする |
Step 6 | FIND 関数で「〜課」までを抜き出し、さらに FIND 関数で「〜部」までを引く |
・関数で文字列(テキスト)を指定するときは「”」で囲むのを忘れないようにしましょう。
それでは、関数を書いていきましょう。
関数を書く

セルにカーソルを合わせ、「= MID」と入力するか、「挿入」メニューから「新規数式」を選択します。

「テキスト」から MID を選択するか、検索窓に「MID」と入力しても探すことが出来ます。「関数を挿入」をクリックします。

Step 1
MID 関数の「対象文字列」を指定します。(ここでは「B2」)
= MID ( B2 , 開始位置, 文字列の長さ )

Step 2
MID 関数の「開始位置」に FIND 関数を入れ子にします。
= MID ( B2 , FIND ( 検索文字列, 対象文字列 [, 開始位置] ), 文字列の長さ )

Step 3
入れ子にした FIND 関数の「検索文字列」に “部” を、そして「対象文字列」に「検索文字列」の位置を求める文字列のセル(ここでは「B2」)を指定します。
関数で文字列(テキスト)を指定するときはダブルクォーテーション「”」で囲みます。
※ FIND 関数の「開始位置」は省略しますので削除してOKです。
= MID ( B2 , FIND ( “部“, B2 ), 文字列の長さ )

Step 4
今回の例では「部」を含まないので、「+1」を入力します。
こうすることで、「部」の次の1文字目からが「開始位置」となります。
= MID ( B2 , FIND ( “部“, B2 ) +1, 文字列の長さ )

Step 5
MID 関数の「文字列の長さ」に、FIND 関数を入れ子にします。
※ FIND 関数の「開始位置」は省略しますので削除してOKです。
= MID ( B2 , FIND ( “部“, B2 ) +1, FIND ( 検索文字列, 対象文字列 ) )

Step 6
入れ子にした FIND 関数で「〜課」までを抜き出し、さらに FIND 関数で「〜部」までを引く式を書きます。
こうすることで、「部」から「課」までの「文字列の長さ」を指定することができます。
今回の例では「課」を含めないので、式の最後に「-1」を入力します。
これで完成です。
= MID ( B2 , FIND ( “部“, B2 ) +1, FIND ( “課“, B2 ) − FIND ( “部“, B2 ) -1 )


式を反映させる
Enter を押して式を反映させたら、黄色のハンドルを下にドラッグしてセルを自動入力させます。

入力結果
無事に、課の名称だけが抽出できました。お疲れ様でした。
