ACCESS Left関数の使い方
ACCESSで文字列を加工する際に最もよく利用する関数の一つがLeft関数です。
文字列の左側から任意の文字数を抽出することができる関数です。
今回は、Left関数の使い方をご紹介します。
こんにちは。
はこにわガジェット (@hakoniwagadget) です。
ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSをもっと使いこなしたい方向けにACCESSの関数をご紹介していきます。
Left関数の構文
Leftは以下の構文で利用します。
Left ( 文字列 , 抽出する文字数 )
引数が2つだけで比較的単純な関数ですね。
以下にいくつか抽出例を示します。
元の文字列 | 関数 | 結果 |
12345A | Left(“12345A”,2) | 12 |
12345A | Left(“12345A”,4) | 1234 |
12345A | Left(“12345A”,6) | 12345A |
12345A | Left(“12345A”,8) | 12345A |
2つ目の引数の抽出する文字数が元の文字数を超えている場合は、元の文字列全てが結果として返されます。
Left関数をクエリで利用する方法
それでは、クエリでLeft関数を使用する方法をご紹介します。
今回は例として「T_変換」というテーブルの「型番」フィールドの値を先頭から2文字のみ抽出する、という処理を作成します。
Left関数をクエリで利用するには、まずACCESSのメニューからクエリデザインで新規クエリを作成します。
テーブルの追加、からLeft関数で変換したいフィールドを含むテーブルをクエリの上段(フィールドリスト)に追加します。
そして、変換対象のフィールドを上段から下段のデザイングリッドへドラッグアンドドロップで持ってきます。
クエリでLeft関数を使って一部の文字列を抽出するには、抽出結果を表示するフィールドを追加する必要があります。
今回下段に作成した型番フィールドの右側に空白のフィールドがあると思いますので、そこに新しいフィールドを記述していきます。
「フィールド」行に以下のように記述します。
変換: Left([型番],2)
実際のクエリの画面では下記のようになります。
最初の「変換」は新たに作ったフィールド名を示しています。
クエリで新規フィールドを作成する場合は、:(コロン)の前の部分がフィールド名として認識されます。
その後に、Left関数を使って型番フィールドから2文字を抽出するように記述してきます。
クエリの場合はフィールド名を[]で囲う必要があることに注意してください。
それでは、データシートビューで結果を見てみましょう。
このように、各レコードに対して先頭2文字が抽出されて「変換」フィールドに表示されます。
Left関数をフォームで利用する方法
次に、フォームでLeft関数を使ってみましょう。
先ほど同じで「T_変換」というテーブルの「型番」フィールドの値を先頭から2文字のみ抽出する、という例で説明します。
まずは、T_変換テーブルを元にしたフォームを作成します。
ここに、Left関数で型番を変換した値を追加で表示します。
フォームをデザインビューで開きましょう。
新しいテキストボックスを追加し、コントロースソースに以下のように記述します。
=Left([型番],2)
画面で見るとこのようになります。
これで完成ですので、フォームビューで結果を見てみましょう。
このように新しいテキストボックスにLeft関数で抽出した結果が表示されます。
Left関数をVBAで利用する方法
続いて、VBAでLeft関数を使ってみましょう。
先ほど作ったフォームで、型番の先頭から2文字が「12」だったらOK、それ以外であればNGと表示する機能を作ってみます。
まずはフォームに、判定ボタンを設置しました。
このボタンにイベントプロシージャを設定します。
フォームをデザインビューで表示して、クリック時イベントにイベントプロシージャを設定しました。
イベントプロシージャの内容がこちらです。
Private Sub 判定_ボタン_Click()
If Left(Me!型番, 2) = "12" Then
MsgBox "OK"
Else
MsgBox "NG"
End If
End Sub
If文の条件判定にLeft関数を使っています。
Left関数で抽出した結果が「12」であればメッセージボックス関数で「OK」を、それ以外であれば「NG」を表示するように設定しました。
VBAでLeft関数を利用する場合は、フォームの入力値などから一つ目の引数である文字列を取得することが多いと思います。
今回もフォーム上の型番フィールドの値を利用しているのでMe!型番という指定をしました。
クエリやフォームの場合は[]で囲っていましたので、このあたりの違いに注意してください。
クエリやフォームはそのクエリ内、もしくはフォーム内にあるフィールドを参照するため[]で囲います。
逆に言うとそのクエリやフォームに対象のフィールドを含めていないと利用できません。
一方、VBAではどこからでもデータを取得できるため、記述方法が変化するのです。
抽出する文字数を変動させる方法
ここまで、クエリ、フォーム、VBAとLeft関数の使い方をご説明してきました。
ただどれも、抽出する文字数は定数で指定しています。
実際にACCESSでLeft関数を利用する場合は、抽出する文字数が変動するケースも多々あります。
例えば元の文字列の長さに応じて抽出する文字数が変わる場合などです。
そこで、抽出する文字数を変動させる方法をご紹介します。
例として元の文字列の文字数より3文字短く抽出をしてみます。
クエリで以下のように設定しました。
変換: Left([型番],Len([型番])-2)
Left関数の2つ目の引数にLen関数を使って型番フィールドの文字数を取得した上で、そこから2を引いた数を抽出するようにしています。
Len関数について詳しくは以下の記事を参照ください。
では結果を見てみましょう。
このように、型番フィールドの文字数に応じて、変換フィールドに抽出される文字数が変わっていることが分かります。
実際にLeft関数を利用する場合は、引数に関数を利用することも多いので覚えておくと便利でしょう。
以上、Left関数の使い方をご紹介しました。
ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。
そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。
ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。
最後までお読みいただき、ありがとうございました。