- 文字列操作関数を扱うための基礎が分かる
- よく使われる文字列操作関数について学習できる
Access関数の使い方をシリーズで投稿しています。
前回は入門者がおさえておきたいAccess関数の使い方を解説しました。
Access関数の基礎が身についてきた方は、さらにワンランク上の関数を学習していきましょう。
第6回目の今回は文字列操作関数を4種類紹介します。
Accessのデータ型には、数値・文字列・日付など様々なものがありますよね。
テーブルに蓄積された文字列を操作するスキルは、Accessを思い通りに扱うためには必要です。
本記事では、文字列操作関数の中でも特によく使う4種類に絞って解説していきます。
その1-複数の文字列を結合させる
まずは文字列関数を習得する前に、一番の基本となる複数の文字列を結合させる方法について触れておきます。
テーブル「T_名簿」に登録されている「姓」と「名」をつなげてみましょう。
クエリのデザインビューを作成し、姓と名をつなげた『名前』フィールドを作ります。
- 名前:[姓]&[名]
『&(アンパサンド)』で「姓」と「名」をつないでいます。
データシートビューを確認すると、「姓」と「名」がつながっているのを確認できました。
今度はフィールド「名」を特定の文字列「次郎」に変えてみます。
- 名前:[姓]&"次郎"
フィールドは『[](角かっこ)』、定数は『””(ダブルクオーテーション)』でくくる、というお作法に従いましょう。
データシートビューで確認すると、「名」が「次郎」に変わりました。
いったんデザイングリッドの「"次郎"」を「[名]」に戻します。
「姓」と「名」が詰まっていてきゅうくつなので、間にスペースを入れてみます。
- 氏名:[姓]&” “&[名]
データシートビューで確認すると、スペースが入って見やすくなりました。
単体のフィールドや文字列だけでなく、『&(アンパサンド)』でつないだ文字列自体も文字列操作関数の引数に指定できます。
ここまで読んでくれた方の中には「&(アンパサンド)って関数ではないのでは?」と感じたかもしれません。
文字列操作関数を思い通りに操るためには、複数の文字をつなぐ方法は必ずおさえておきたいことです。
そのような理由から、まずは文字列をつなぐ『&』について触れておきました。
その2-Left、Right、Mid関数で文字を抜き出す
文字列で指定した箇所を抜き出すのに使える関数として、「Left」「Right」「Mid」の3つを覚えておくとよいです。
左から抜き出すLeft関数
Leftはその名の通り文字列を左(先頭)から抜き出す関数です。
- 第一引数・・・元になる文字列
- 第二引数・・・左からの文字数
テーブル「T_時期M」に3月上旬から下旬までのデータが入力されています。
Left関数を使って「3月」を抜き出してみます。
フィールド名は「Left関数」とします(何の工夫もありませんが…)。
- Left関数:(Left[時期名],2)
フィールド「時期名」の左から二文字分である「3月」を抜き出すことができました。
右から抜き出すLeft関数
RightはLeftとは正反対で、文字列を右(文末)から抜き出す関数です。
- 第一引数・・・元になる文字列
- 第二引数・・・右からの文字数
さっそく時期名フィールドから、「3月」を省いた文字列を抜き出してみます。
- Right関数:Right([時期名],2)
結果を確認すると、「3月」を除いた「上旬・中旬・下旬」がそれぞれ抜き出されました。
途中を抜き出すMid関数
Midは文字列の中間部分を抜き出す関数です。
- 第一引数・・・元になる文字列
- 第二引数・・・何文字目から抜き出すか(左から数える)
- 第三引数・・・抜き出す文字数
フィールド「時期名」の2文字目から2文字分だけを抜き出してみますね。
- Mid関数:Mid([時期名,2,2])
結果を確認すると、指定された文字が抜き出されていることが確認できました。
その3-InStr関数で文字の位置を返す
InStrは指定した文字が先頭から何文字目にあるかを検索してくれる関数です。
- 第一引数・・・開始位置(省略可)
- 第二引数・・・元になる文字列
- 第三引数・・・検索する文字列
- 第四引数・・・検索モード
第四引数まで設定できるようになっていますが、実務の大部分は第二引数と第三引数だけで成り立ちます。
これまでInStr関数を使ったことのない方は、言うまでもありません。
まずは第二引数と第三引数のみを使ったパターンを習得しましょう。
InStr関数は、主に文字を抜き出す関数(Left・Right・Mid)と組み合わせますが、いったんInStr関数のみの動きを見てみますね。
テーブル「T_時期M」を使いますが、先に12月の時期データを追加しておきます。
フィールド「時期名」に「月」が何文字目かに含まれているかを調べるために、InStr関数を作ります。
- InStr関数:InStr([時期名],"月")
結果を確認すると、「3月○旬」のデータは「2」、「12月〇旬」のデータは「3」と出力されました。
では、InStr関数の実践的な使い方に入っていきますね。
仮に月名を抜きだしたいとき、2ケタ月(10月~12月)まで含まれるとLeft関数だけでは目標を達成することができません。
2文字分を指定すると、「12月」と指定されずに「12月」となってしまいます。
一方、3文字分を指定すると、「3月」と指定されずに「3月〇」となります。
このような、文字位置がビミョウに変わる文字を操りたいときに、InStr関数を使うことでいい感じに抜き出してくれます。
実際にLeftとInStr関数を組み合わせてみます。
- 月名:Left([時期名],InStr([時期名]."月"))
結果を確認すると、月名のみを正しく抜き出すことができました。
「完全に文字数を統一できない」というのが実務ではよくありますので、InStr関数を活用した文字の抜き出しはぜひともマスターしておきたいところですね。
その4-Replace関数で置換する
Replaceは一部の文字を置換する時に使う関数です。
- 商品コードの『-(ハイフン)』のみを排除したい
- 『㈱』を『株式会社』に置換したい
このようにデータを加工したいことが、実務ではよくありますよね。
そんなときにはReplace関数を使いましょう。
- 第一引数・・・元になる文字列
- 第二引数・・・置換前の文字
- 第三引数・・・置換後の文字
テーブル「T_工具」にはいろいろな名前のドライバーが入力されています。
Replace関数を使って「プラス」を「マイナス」に置換してみましょう。
- Replace([工具名],"プラス","マイナス")
データシートビューで確認してみると、指定したとおりに置換されていることを確認できました。
まとめ
今回は、Accessの文字列操作関数でよく使うものを紹介しました。
Accessの文字列操作関数は、そのままVBAコードでも実行できて、他のプログラミング言語にも横展開できる『とても汎用性の高い関数』です。
慣れるまでは難しく感じますが、将来他のプログラミング言語を学習するときに、きっと楽に習得できるので、取りこぼさず学習していきましょう。
また、Accessには今回紹介した4種類以外にも、いろいろな文字列操作関数がありますので、興味のある方は自分に合ったものを試してみてもよいでしょう。
できるシリーズのAccess本で有名な『きたみあきこ』さんのサイトではかなり詳しく解説されていますので、参考までにリンクを貼っておきます。
文字列操作関数 ~Access関数~ - Officeのチカラ
本日もありがとうございました。