ACCESS 末尾の文字だけを置換する方法
ACCESSで文字の置換を行う際に利用するのがReplace関数です。
Replace関数には様々な使い方がありますが、今回は文字列の末尾の文字だけを置換する方法をご紹介します。
こんにちは。
はこにわガジェット (@hakoniwagadget) です。
ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSをもっと使いこなしたい方向けにACCESSの関数をご紹介していきます。
末尾の1文字だけを置換する方法
文字列の末尾1文字だけを置換する際は、ACCESSのクエリを利用します。
クエリで新しいフィールドを作成し、Replace関数を使って元の文字を変換した文字列を作成します。
ただし、変換対象の文字が文中にあらわれてしまうケースがあるため、末尾だけをReplace関数で変換するためにいくつかの工夫が必要です。
例えば、「型番」というフィールドの末尾の「A」だけを「Z」に変換したい場合のクエリの記述は以下になります。
変換後型番: Left([型番],Len([型番])-1) & Replace([型番],"A","Z",Len([型番]),1)
なかなか複雑ですので、詳細は以下に説明します。
サンプルテーブル
今回はサンプルとして以下のテーブルを準備しました。
型番テーブルに文字列型のデータが格納されています。
今回は、この型番の文字列の末尾の「A」を「Z」に変換したいと思います。
今回はクエリ上で文字の変換を行います。
クエリデザインからクエリを作成します。
空のクエリに今回利用する「T_変換」テーブルを追加し、下段のデザイングリッドにフィールドを追加します。
この際、既存の型番フィールド以外に、クエリで新たなフィールドを作成します。
一番右にある変換後型番フィールドです。
クエリで新しいフィールドを作成するには、フィールド名+:(コロン)を記述し、コロンの後に関数を書いていきます。
つまり、この後ろにReplace関数を使って「A」を「Z」に変える関数を書いていくわけです。
Replace関数を使った文字列の置換
ではReplace関数を使った文字列の置換について解説します。
Replace関数は指定した文字列を変換することができる関数で、以下の構文で利用します。
Replace ( ①置換前の文字列全体 , ②置換対象文字列 , ③置換後文字列 , ④検索開始位置 , ⑤置換回数 , ⑥比較方法 )
詳しくは以下の記事に記述していますので興味がある方はご覧ください。
では、実際にクエリにReplace関数を入れてみましょう。
まずはReplacce関数で以下のように記述しました。
変換後型番1: Replace([型番],"A","Z")
「型番」フィールドで「A」を「Z」へ変換する、という指定をしています。
では結果を見てみましょう。
データシートビューを表示します。
一番右の中央の型番フィールドから、右側の変換後型番1フィールドへ変換しています。
「A」が「Z」に置き換わっていますね。
しかし、ID:3のデータでは末尾だけでなく途中にある「A」まで置き換わってしまっています。
本来は末尾だけを変換したいので、修正の必要がありますね。
Len関数を使って末尾を指定する
上記を解決するためには、Replace関数の4つ目の引数である、置換開始位置を指定する必要があります。
末尾の文字だけを置換したいので、置換開始位置を末尾の文字の位置で指定するのです。
そのために利用するのが文字列の長さを調べるLen関数です。
Len関数について詳しく知りたい方は、以下の記事をご覧ください。
Len関数を用いて記述を主制したのが下記です。
変換後型番2: Replace([型番],"A","Z",Len([型番]),1)
開始位置の指定をLen([型番])とすることで文字列の末尾の字から置換を開始するようにしています。
5つ目の引数の置換回数も1回で指定しています。
では結果を見てみましょう。
なんと、1文字しかなくなってしまいました。
Replace関数は置換開始位置を指定すると、それ以降の文字列しか返さないのです。
となると、末尾の文字以外の文字はそのまま付与する処理を考える必要があります。
ここで利用するのがLeft関数です。
Left関数は文字列を左側から、つまり先頭から指定した文字数分抽出する関数です。
これを使って以下のように書き換えました。
変換後型番3: Left([型番],Len([型番])-1) & Replace([型番],"A","Z",Len([型番]),1)
最初に
Left([型番],Len([型番])-1)
を入れることで、末尾の文字以外はそのまま利用するようにしています。
ここでもLen関数を使っていますが、Len([型番])-1としていますので、末尾の文字を除いたその前までの文字数を指定してLeft関数で抽出し、その後にReplace関数で末尾の文字を置換して「&」で二つをつなげているのです。
では、結果を見てみましょう。
これで無事に末尾の文字だけが「A」から「Z」に変換できました。
以上、末尾の文字だけを置換する方法をご紹介しました。
ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。
そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。
ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。
最後までお読みいただき、ありがとうございました。