MID分類:文字列操作 2009.02.06
MIDは「文字列操作」に分類される関数で、引数に指定した文字列の任意の場所から指定した文字数を取り出します。
「氏名から名前を取り出す」「市区名を取り出す」といった用途が考えられます。
MIDの機能と構成
機能:文字列の指定した位置から、指定した文字数を返す。半角・全角の区別無く1文字を1と処理。
構成:=MID(文字列,開始位置,文字数)
引数
文字列にはMID関数で取り出す、対象文字列を指定します。
開始位置には、取り出したい文字列の先頭位置を指定します。開始位置が文字列の文字数より大きな場合は、空の文字列が返されます。又開始位置が「1」より小さな場合は#VALUE!のエラーになります。
文字数には取り出したい文字数を数値で指定します。=MID(A1,1,)のように省略した場合は「0」を指定したとみなされます(その場合セルには何も表示されません)。文字列より多くを指定した場合は、開始位置より後の文字列全てを取り出します。
尚、全角・半角関係なく、空白や句読点も1字として扱われます。
引数指定の例
セル[A1]の文字列の、「3」文字目から「2」文字を取り出す:=MID(A1,3,2)
[Data]と名前を定義したセルの文字列の、「3」文字目から「2」文字を取り出す:=MID(Data,3,2)
数式を挿入したセルと、同じ行の文字列、「3」文字目から「2」文字取り出す※:
=MID($A$1:$A$10,3,2)
※「文字列」に行又は列、どちらか一方の1次元セル範囲を指定出来ます。しかし、MIDの対象となる文字列はセル範囲が行方向なら同じ行、列方向なら同じ列のセル値になります。2次元セル範囲を指定すると、#VALUE!のエラーになります。
MID関数の応用
FIND関数との応用(1)
MID関数は文字を検索するFIND関数と組み合わせることで、特定の文字を基準に文字列を取り出せます。→FIND関数
=MID(対象文字列,FIND(検索文字列,対象文字列,開始位置),抽出文字数)
※「検索文字列」を含まず、それより後を取り出すには、FIND関数の結果に「1」を加えます。
次の例は、名字と名前の間にある" "(スペース)を基準に、文字列(名前)を取り出しています。
=MID(C3,FIND(" ",C3)+1,3)
【数式の説明】
1.FIND関数で" "(スペース)の位置を求める。
2.スペースは取り出さないので、FIND関数の結果に「1」を加える。
3.名前の最大文字数は(この場合は)3文字なので、文字数には「3」を指定する。
FIND関数との応用(2)
次は市区町村を取り出す例です。ここではFIND関数に加え、エラー判断を行うISERROR関数、分岐を行うIF関数も使用します。
セル[D3]に対象文字列(住所)がある場合:
=IF(ISERROR(FIND("県",D3)),MID(D3,4,3),MID(D3,FIND("県",D3)+1,3))
【数式の説明】
1.IF関数の第1引数のFIND関数で、セル[D3]から「県」を探す。
2.「県」が見つからなかった場合は、IF関数の真の条件へ進み、MID関数でセル[D3]の4文字目から3文字を取り出す。
(北海道、東京都、京都府、大阪府は全て3文字のため開始位置はそれより後の「4」になる。
又、この場合市の名は全て3文字のため、文字数には「3」を指定。)
3.「県」が見つかった場合、IF関数の偽の条件へ進む。FIND関数でセル[D3]の「県」の位置を求め、
それに「1」を加える(県の次の文字から取り出すため)。そして、それより後の3文字を取り出す。
MID関数の類似関数
MID関数の類似関数にMIDB関数があります。MID関数の第3引数は「文字数」であったのに対し、MIDB関数の第3引数は「バイト数」になります(半角文字は1バイト、全角文字は2バイトです)。使用機会は多くないと思いますが覚えておきましょう。