MID関数の使い方|任意の位置から指定の文字数を抽出

Excel(エクセル)MID関数の使い方|任意の位置から指定の文字数を抽出

Excel(エクセル)MID関数の使い方|任意の位置から指定の文字数を抽出

MID関数はExcelで特定の文字列を抽出する関数の一つで、任意(自分の思い通り)の位置から指定した数だけの文字を取り出します。ここではMID関数の使い方について、できるだけ分かりやすく図解します。

使用関数:MID

MID(ミッド)関数とは?

MIDはミッドと読みます。中間の部分、中央を意味する連結形の英語で、ミッドサマーやミッドナイトのMIDですね。

MID関数は文字列の途中の自由な場所から自由な数の文字を抽出します。単独で使われることは少なく、LEFT、RIGHT、FIND、LEN、SUBSTITUTEなど他の関数と組み合わせて使われます。特に、LEFT関数、RIGHT関数とはセットで解説されることが多く、文字列の抽出に使用する関数のグループとしてまとめて覚えることをお勧めします。

関数名 文字列の抽出位置 引数
LEFT 左・先頭から 文字列・文字数
MID 任意の位置から 文字列・開始位置・文字数
RIGHT 右・後ろから 文字列・文字数

全角が2、半角が1として文字を抽出するMIDBについて

文字列操作の関数にはMIDと1文字違いのMIDBがありますが、この2つの関数の違いは単位です。Excelの文字単位には「文字数」と「バイト数」があり、MIDBはバイト数(半角が1バイト、全角が2バイト)で左から文字を切り出します。MID関数が文字数4で抽出する漢字はMIDB関数ではバイト数8で抽出することになります。

MID関数の基本的な使い方

MID関数をダイアログで組み立て、引数を確認してみましょう。

「数式」タブ→「関数ライブラリ」→「文字列操作」からMIDをクリックします。
「数式」タブ→「関数ライブラリ」→「文字列操作」→MID

MID関数の書式の構成はこうなります。「文字列」「開始位置」「文字数」(必須)です。
MID関数の書式の構成

以下の文字列は顧客の分類コード1-分類コード2-識別番号からなる顧客コードです。ここからMID関数で分類コード2部分を取り出してみましょう。
MID関数で中間の文字列を取り出す顧客コード

第一引数「文字列」

文字を切り出す元の文字列を指定します。数値や文字列を直に入力するか、セル参照、数式を入力します。

この例では最初の顧客コードのセルをクリックして指定します。
MID関数の引数「文字列」を指定

第二引数「開始位置」

取り出す文字列の最初の文字位置を指定します。引数「文字列」で指定した文字列の先頭文字を1として数えた数値、セル参照、またはその数値を戻り値とする数式で指定します。
※「開始位置」に文字列を超える数値を指定すると、空白が返されます。

この例ではコードの桁数は一律です。分類コード1の4文字+ハイフンの1文字=5で、その次の文字から抽出を開始するので「6」と入力します。
MID関数の引数「開始位置」を指定

第三引数「文字数」

第二引数で指定した「開始位置」から何文字取り出すかを指定します。数値や数式を入力するか、セルを参照します。
※「文字数」に文字列を超える数値を指定すると、「開始位置」から「文字列」の末尾までが返されます。

この例では「属性コード2」はすべて3文字なので、数値で「3」と入力します。
MID関数の引数「文字数」を指定

数式を下までオートフィルコピーして完了です。文字列の指定位置から3文字までのコードが取得できました。
MID関数の結果

MIDはシンプルな関数ですが、利用範囲は広く、いろいろな場面で役立ちます。

MID関数で文字列化した数値を数値に変換する

MIDは文字列操作の関数です。取り出された数値は文字列として表示されます。

例えば、数値の入ったセルを「文字列」に指定し、「開始位置」を4、「文字数」を3と指定して返った結果「456」はセル内で左寄せになっていることから文字列に認定されたことが判ります。
MID関数で取り出した数値は文字列になる

これを計算に使いたいために数値に変換したいというなら、文字列のまま計算して問題ありません。それ以外で数値に変換させる必要がある時は、MID関数の数式ごとVALUE関数にネストする「=VALUE(MID(A2,4,3))」または、LEFT関数の数式の末尾に「/1」か「*1」を入力して「=MID(A2,4,3)/1、=MID(A2,4,3)*1」数値であるとExcelに認識してもらえば数値に変換されて表示が右寄せになります。
MID関数で取り出して文字列になった数値を数値に変換

MID関数で日付から月を抽出すると空白が返る

「2022/7/16」という日付からLEFT関数で「年」を、MID関数で「月」を、RIGHT関数で「日」を取り出したくなるかもしれませんが、これはNGです。MID関数で開始位置6、文字数1を指定して月を取り出そうとしてもシリアル値は5桁なので空白が返ります。
MID関数で日付から抽出しようとした結果

日付からの抽出はYEARMONTHDAYの各関数を使いましょう。

MID関数の組み合わせ応用例

MID関数と他の関数を組み合わせた応用例の幾つかを挙げておきます。

FIND関数とMID関数で右(後ろ)から特定の文字までの文字列を取り出す

桁数が揃っていないコード表から、ハイフンより右にある識別番号を取得します。
FIND関数とMID関数で右からハイフンまでの文字列を取り出すコード

まず、FIND関数で特定の文字(この例ではハイフン)の位置を取得します。
FIND関数で特定の文字の位置を取得

FIND関数の数式FIND(“-“,A2)をMID関数の第二引数「開始位置」に入れ子しますが、この値のままだとハイフンも含まれるので末尾に「+1」を入力します。
FIND関数の数式をMID関数の第二引数「開始位置」にネストし、末尾に+1を入力

コードによって取得する桁数が違うので、MID関数の第三引数「文字数」に取得する文字列(この例では識別番号)の数を上回る大きさの数値を指定します。文字列より大きな数値を指定すると文字列の末尾までが返されるという特質を利用するわけです。この例では取り敢えず「30」と入力しました。
MID関数の第三引数「文字数」に取得したい文字列を上回る大きさの数値を指定

数式をオートフィルコピーして完了です。FIND関数とMID関数で右から特定の文字までの文字列が取り出されました。
MID関数で右から特定の文字までの文字列を抽出

数式 =MID(A2,FIND(“-“,A2)+1,30)

MID関数、IF関数とLEFT関数で住所から都道府県名を取り出す

以下の住所から都道府県名だけを取り出してみましょう。
MID関数、IF関数、LEFT関数で都道府県名を取り出す住所

都道府は全て3文字、県は3文字か4文字です。そこで、「MID関数で4文字目を取り出し、その値が”県”だったら」という論理式を組み立てます。

MID関数で左から4文字目を取り出すには、引数「開始位置」に「4」、引数「文字数」に「1」を指定します。
MID関数で4文字目を取り出す指定

この数式をIF関数の「論理式」にペーストし、続けて、=”県”と入力します。
IF関数の論理式にMID関数をペーストし、="県"と入力

IF関数の「真の場合」に取り出す文字数を4と指定したLEFT関数をネスト(入れ子)し、「偽の場合」に取り出す文字数を3と指定したLEFT関数をネスト(入れ子)します。
IF関数の「真の場合」と「偽の場合」にLEFT関数をネスト

MID関数、IF関数、LEFT関数で住所から都道府県名を抽出できました。オートフィルコピーして完了です。
MID関数、IF関数、LEFT関数を組み合わせて住所から都道府県を抽出

数式 =IF(MID(A2,4,1)=”県”,LEFT(A2,4),LEFT(A2,3))

MID関数と他の関数を組み合わせた応用例は以下の記事も参考にして下さい。

FIND、LEN、SUBSTITUTE、IFERROR、LEFTとMID関数で住所の番地を漢数字から算用数字に変換

例えば、「東京都○区○○一丁目二番」という表記を「東京都○区○○1-2」にします。

漢数字で入力してある住所データの所番地を半角数字に置き換える方法

503 Error - Service Temporarily Unavailable
MID関数の使い方 まとめ
  • MIDは任意(自分の思い通り)の位置から指定した数だけの文字を抽出する関数です
  • MID関数は全角でも半角でも1とカウントします。全角を2、半角を1と区別してカウントした文字を抽出するならMIDBを使います
  • MID関数の引数「開始位置」に文字列を超える数値を指定すると、空白が返されます
  • MID関数の引数「文字数」に文字列を超える数値を指定すると、「開始位置」から「文字列」の末尾までが返されます
  • MID関数で数値を取り出すと文字列になります。数値に変換する必要があるならVALUE関数に入れ子するか数式の末尾に/1や*1を入力します
  • MID関数で日付から年月日を切り出すことはできません。YEAR・MONTH・DAYの各関数を使います
  • 右(後ろ)から特定の文字までの文字列を取り出すにはMID関数とFIND関数を組み合わせます
  • 住所から都道府県名を取り出すにはFIND関数、IF関数とMID関数を組み合わせます
  • 住所の番地を漢数字から算用数字に変換するにはFIND、SUBSTITUTE、IFERROR、LEFT、LENとMID関数を組み合わせます
タイトルとURLをコピーしました