エクセルで文字情報を扱っている時に、「データの◯文字目~△文字目までが取得ほしい」とか思ったことがあるはずです。文字データの途中がほしい状況で役立つ関数としてMID関数が存在するので、ここで紹介していきます。

MID関数とは何か?

MID関数はそもそも英語の「Middle(意味:間)」に由来する関数で、その意味の通り、文字列の途中から指定した文字数分だけ文字を取得してくれます。

MID関数の書式=MID(文字列,開始位置,文字数)
対応Version365、2019、2016、2013、2010

MID関数の「文字列」について

「文字列」には、抽出の対象としたい文字列を指定します。空白の文字列を指定した場合は、結果も空白となります。

MID関数の「開始位置」について

「開始位置」には、「文字列」の左端から何番目を基準に文字を取得するかを指定します。「3」と指定すれば、「文字列」の左から3番目の文字をスタートとした結果を取得することになります。

MID関数の「文字数」について

「文字数」には、「文字列」の「開始位置」から取得したい文字数を指定します。RIGHT関数、LEFT関数では「文字数」は任意となっていましたが、MID関数では必須なので間違えないようにしてください。

なお、文字数に小数を含む数字を指定した場合には、整数の部分のみが有効となります。例えば、「文字数」に4.3と入力した場合、4を入力したとみなされ、MID関数の結果としては開始位置から4文字が取得されます。

MID関数の具体的な使い方

MID関数はパターンのある文字列の扱いで非常に役立ちます。代表的な使用場面としては、

  • 住所の市区町村以下を取得する
  • 電話番号の市外局番を削除する
  • 氏名の名前だけを取得する

が挙げられます。住所や電話番号、氏名には例外はあるものの、一定のパターンが存在するので、所得したい結果が取得できる可能性が高いことはわかってもらえると思います。(もちろん100%の精度で取得できるわけではありません

ここでは住所を1例に挙げ、MID関数の使い方を確認していきます。

①MID関数を使える状況を準備します。

②MID関数を使いたいセルに「=MID (」と入力します。

③「文字列」を指定します。

ここでは「B3」セルを参照する形で「文字列」を指定しています。

④「開始位置」を指定します

⑤「文字数」を指定します

MID関数では「文字数」は必須項目なので指定を忘れないようにしましょう。

⑥「Enter」を押し、表示された結果を確かめます。

⑦他のセルにもRIGHT関数を反映させます。

他のセルにRIGHT関数を反映させたいのであれば、コピペやオートフィルが有効です。エラーや意図しない結果が表示される場合には、引数を見直しましょう。

姉妹関数のLEFT関数、RIGHT関数

MID関数は文字列の途中からの取得でしたが、エクセルでは他にも似た関数としてLEFT関数、RIGHT関数が用意されています。

LEFT関数は文字列の先頭から取得したい場合に、RIGHT関数は文字列の最後から取得したい場合に使われます。この機会にMID関数だけでなくLEFT関数やRIGHT関数も理解しておきたいという方はそれぞれの関数の説明も確認してみてください。

MID関数×「他の関数」の組み合わせ

MID関数をより有効に使いこなすには、他の関数と組み合わせた使用方法も理解しておくことをオススメします。ここでは代表的な例を取り上げておきます。

MID関数×FIND関数

MID関数のみだと「開始位置」が固定されてしまうので、例外に対応できない状況が発生します。

↑開始位置が「4」と固定されていると問題起こることも
↑FIND関数を組み合わせることで問題が起きにくくなる

FIND関数によって句切れとなる文字の位置を検索することで開始位置に柔軟性をもたせることができます。上記の例では、市区町村名を取得したかったので、FIND関数によって「県」の位置を特定し、MID関数の「開始位置」と関連づけています。

MID関数×TEXT関数

MID関数だけでは結果が全く取得されないケースもあります。代表的なのは年月日から月日のみを取得するような日付を扱いたい状況です。エクセルに表示されているものだけを確認すると、「ちゃんと関数を定義しているのに、なぜ思い通りに日付が取得できないのか?」と疑問に思うはずです。

実はエクセルでは日付を「シリアル値」と呼ばれる値で管理されています。シリアル値は私達が普段目にしている「2020/11/18」のような形式ではなく、「44153」のような数値で管理されます。日付に対してMID関数を使うと、「シリアル値」を対象文字列と認識し、指定した開始位置と文字数に従い、結果が表示されます。

そこで思い通りの日付を取得するために、日付を一度文字列に変換するステップを挟みます。日付を文字列に変換するのは簡単でTEXT関数を使用します。そうすることで思い通りの結果を取得できます。