Mid関数は、文字列の中から指定した位置の一部を取り出す関数です。この記事では、基本的な構文や、具体的な使い方について解説します。
なお、こちらの記事では関数の基礎知識と共に、Accessで使用できる主な関数を紹介していますので、併せて参考にしてください。
Mid関数とは
文字列の中から指定した位置の一部を取り出す関数です。文字列操作関数として、Left関数やRight関数と共に、使用頻度の高い関数です。
主な活用場面
Mid関数は、「コード」から特定の文字列を抜き出す際によく使用されます。
データベースでは、データの一意性を保つために、各レコードに商品コード、取引先コード、社員コード、受付コードなどのコードを付与するのが一般的です。
このコードは、単なる数字の羅列ではなく、構成内容に意味を持たせていることが多くあります。
たとえばA010071020003という取引コードがあったとしましょう。このコードを分解してみます。
| 商品区分 | 担当部署 | 取引月日 | 連番 |
| A01 | 007 | 1020 | 003 |
Mid関数を使えば、このコードの中から「担当部署部分(007)」だけ抜き出すことができます。
このように、文字列の一部分を抽出して利用できる点が、Mid関数の大きな特徴です。

その他にも固定長ファイル(カンマなどの区切り文字を使わず、各項目があらかじめ決められた桁位置で固定されているファイル)の分割処理などにもよく利用されるね。
構文
Mid(文字列, 開始位置[, 文字数])
各引数の内容は次のとおりです。
| 引数 | 必須/任意 | 内容 |
|---|---|---|
| 文字列 | 必須 | 抽出対象となる文字列 |
| 開始位置 | 必須 | 抜き出しを始める位置(1文字目が「1」) |
| 文字数 | 省略可 | 抜き出す文字数 |
具体例
シンプルな基本形
Mid("ABCDEFG", 3, 2)
【結果】
戻り値としてCDが返ります。
【解説】
開始位置が3文字目で、2文字分を抽出するため、ABCDEFGからCD部分が抽出されます。
引数[開始位置]のみを指定
Mid("123456789", 6)
【結果】
戻り値として6789が返ります。
【解説】
引数文字数は省略することができます。省略した場合は、指定した開始位置から文字列の末尾までを抽出しますので、本例の場合は6789が返ります。
他の関数との組み合わせ
Mid("100-1111", InStr("100-1111", "-") + 1)
【結果】
戻り値として1111が返ります。
【解説】
InStr関数と組み合わせたパターンです。InStr関数は、指定した検索文字列(-)で検索し、最初に見つかった文字位置を返します。事例では100-111の4文字目に該当し、さらに1を足しているので5が返ります。5がMid関数の開始位置として指定されるため、最終的に1111が返されます。
使用例
クエリの演算フィールドで使用
クエリの演算フィールドでMid関数を使用することができます。
【具体例】
下記サンプルテーブルの取引コード(赤枠部分)をMid関数で分割します。

前述「主な活用場面」で触れたように、取引コードには商品区分や担当部署が含まれており、今回はクエリでこの2つのフィールドを新たに作成します。

クエリでは以下のように設定しています。
商品区分は先頭から3文字分 → 商品区分: Mid([取引コード],1,3)
担当部署は4文字目から3文字分 → 担当部署: Mid([取引コード],4,3)

左端の「商品区分」は、Left関数で抜き取ってもいいですね!
クエリを実行してみましょう。

VBAで使用するパターン(固定長ファイルの読み込み)
VBAでの実務的な活用例として、固定長ファイルを1行ずつ読み込むパターンを紹介します。
Sub Sample5()
Dim lineData As String
Dim 社員コード As String, 氏名 As String, 部署コード As String
Open "C:\Data\社員マスタ.txt" For Input As #1
Do Until EOF(1)
Line Input #1, lineData
社員コード = Mid(lineData, 1, 6)
氏名 = Trim(Mid(lineData, 7, 20))
部署コード = Mid(lineData, 27, 4)
Debug.Print 社員コード, 氏名, 部署コード
Loop
Close #1
End Sub
上記のコードは、Line Input # ステートメントを使って、現在開いている固定長ファイルを1行ずつ読み取るサンプルです。
固定長ファイルでは、1レコードがカンマなどで区切られておらず、各項目(カラム)が桁位置で固定されています。
そのため、あらかじめ決められた桁数に従って、Mid関数の引数(開始位置・文字数)を指定し、1行ずつデータを切り出して処理します。
このサンプルでは、抽出した値をイミディエイトウィンドウに表示していますが、実際の業務ではこれをテーブルへの書き込みや配列への格納などにつなげることが多いです。
まとめ
本記事の要点をまとめます。
Mid関数とは
文字列中の指定した位置から、指定した文字数分の文字を取得する関数。
基本の構文
Mid(文字列, 開始位置[, 文字数])
・文字列:対象となる文字列
・開始位置:抜き出しを始める位置(先頭を「1」と数える)
・文字数(省略可):抜き出す文字数。省略した場合は開始位置以降の全文字列を返す
使用シーン/活用場面
- 商品コード・社員コードなど、フォーマットが決まっている文字列から特定桁を抽出する。
- テキストデータの中から「年月日/地域コード/分類コード」などの一部を取り出す。
- フォーム・クエリ・レポートなどで、表示用・入力チェック用に文字列を加工する。



