MID関数とは
=MID( 文字列 , 開始位置 , 個数 )
意味:文字列の指定した開始位置から右へ個数分の文字を抽出
注意点:文字列以上の個数を指定しても、文字列の最後までが表示される
列)セルA1の「0123456789」から「456」を抽出したい
MID( A1 , 5 , 3 ) = 456

与えられたデータを力技で欲しい形に変形できる
MID関数はデータを抽出できるため、あらゆるデータを組み合わせて、無理やり欲しい形に変形できます。
例)8桁の日付「YYYYMMDD」を「YYYY/MM/DD」に変換したい場合
セルの書式設定や他の関数を利用すればスマートに変換できます。しかし、そんなものを知らなくてもMID関数を駆使すれば作成可能です。
多くの関数を覚えるよりも、応用の効く関数だけマスターすれば、暗記するものを極限まで減らせます。そして、それでも対応できないものだけ、関数等を調べて利用すれば良いと思います。
MID(A1,1,4)&”/”&MID(A1,5,2)&”/”&MID(A1,7,2)=YYYY/MM/DD

他の関数との組み合わせ
MID関数は無理やり色々な形に作成したり、一部を抽出したりできる便利な関数のため、様々な関数と組み合わせられます。
- FIND関数とLEN関数
- IFERROR関数
FIND関数とLEN関数
「002-7896」「0900-433」などから「-(ハイフン)」の前後を抽出したい場合
全てのデータが規則性があればMID(A1,1,3)などと個数を指定できます。
しかし、規則性がない場合、毎回「-」までの個数をカウントする必要があります。
そこで、FIND関数とLEN関数を利用します。
関数 | 機能 |
FIND関数 | 「検索値が文字列の中の何番目にあるか」抽出 |
LEN関数 | 「文字列全体が何文字あるか」抽出 |
FIND関数とLEN関数の詳細は下記記事をチェックしてください。
・セルA1の「002-7869」の前半・後半を抽出
前半 : MID(A1 , 1 , FIND( A1, “-” ) – 1 ) = 002
後半 : MID(A1 , FIND( A1 , “-” ) + 1 ) , LEN(A1)) =7869


IFERROR関数
「1・04」「2・・7」「12・4」から数字のみを順番通りに抽出したい場合
こちらも同様に「・」の配置や個数に規則性がありません。
そこで、文字列×数字はエラーになることを利用します。
セルA1に「1・04」があると仮定して
IFERROR(MID(A1,1,1)*1,””)&IFERROR(MID(A1,2,1)*1,””)&IFERROR(MID(A1,3,1)*1,””)&IFERROR(MID(A1,4,1)*1,””)=104

VBAでの使用例
MID関数はVBAとしても利用できます。
マクロ作成時にも、そのままMID(A1 , 1 ,1 )などとして活用可能です。
活用例は現在作成中。。。。
コメント