【Access関数】Mid関数の使い方|構文・具体例

入門講習

Mid関数は、文字列の中から指定した位置の一部を取り出す関数です。この記事では、基本的な構文や、具体的な使い方について解説します。

なお、こちらの記事では関数の基礎知識と共に、Accessで使用できる主な関数を紹介していますので、併せて参考にしてください。

Mid関数とは

文字列の中から指定した位置の一部を取り出す関数です。文字列操作関数として、Left関数やRight関数と共に、使用頻度の高い関数です。

主な活用場面

Mid関数は、「コード」から特定の文字列を抜き出す際によく使用されます。

データベースでは、データの一意性を保つために、各レコードに商品コード取引先コード社員コード受付コードなどのコードを付与するのが一般的です。

このコードは、単なる数字の羅列ではなく、構成内容に意味を持たせていることが多くあります。
たとえばA010071020003という取引コードがあったとしましょう。このコードを分解してみます。

商品区分担当部署取引月日連番
A010071020003

Mid関数を使えば、このコードの中から「担当部署部分(007)」だけ抜き出すことができます。
このように、文字列の一部分を抽出して利用できる点が、Mid関数の大きな特徴です。

その他にも固定長ファイル(カンマなどの区切り文字を使わず、各項目があらかじめ決められた桁位置で固定されているファイル)の分割処理などにもよく利用されるね。

構文

DCountの基本構文

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-1114文字目に該当し、さらに1を足しているので5が返ります。
5Mid関数の開始位置として指定されるため、最終的に1111が返されます。

使用例

クエリの演算フィールドで使用

クエリの演算フィールドでMid関数を使用することができます。

【具体例】

下記サンプルテーブルの取引コード(赤枠部分)をMid関数で分割します。

サンプルテーブル

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

演算フィールドにMid関数を設定

クエリでは以下のように設定しています。

商品区分は先頭から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」と数える)
・文字数(省略可):抜き出す文字数。省略した場合は開始位置以降の全文字列を返す

使用シーン/活用場面

  • 商品コード・社員コードなど、フォーマットが決まっている文字列から特定桁を抽出する。
  • テキストデータの中から「年月日/地域コード/分類コード」などの一部を取り出す。
  • フォーム・クエリ・レポートなどで、表示用・入力チェック用に文字列を加工する。
タイトルとURLをコピーしました